Is there a better, more efficient way to get the post id outside the loop?

Right now I am using:

$wp_query->post->ID;

I want to know if there is a better way for getting the post id that consumes less resources?

Related posts

2 comments

  1. An alternative to your way would be to access the $post global:

    global $post
    echo $post->ID;
    

    But

    1. It won’t make a noticeable difference, either way
    2. If you want to increase efficiency, you ought to be looking elsewhere…

    EDIT, pertaining to comments:

    what about get_the_ID();?

    –> Needs to be run inside the Loop.

    i have tried both options (get_the_ID and accessing $post global) both give me a wrong id.

    If the latter is the case, you, or some plugin you are using, has not properly reset postdata.

    You say to look elsewhere… where should I be looking?

    I have no idea what it is you are writing. But if you experience resource bottlenecks or inefficiency, retrieval of the current post ID is likely not the cause.

  2. You can also use get_queried_object_id() in conjunction with is_main_query() outside the Loop

    if ( is_main_query() )
        $mypostid = get_queried_object_id();
    

    Note that this function will return author id on a archive page, category id on a category archive, etc.

Comments are closed.