Take the 2-minute tour ×
WordPress Development Stack Exchange is a question and answer site for WordPress developers and administrators. It's 100% free, no registration required.

How do I get a post's ID? I know I can use the_ID(), but I have to use it in The Loop. How can I get the post's ID without the loop? Because I think using the loop just to find the post's ID will slow down my script. Maybe i'm wrong. Please help me :)

Thank you!

share|improve this question
add comment

2 Answers

up vote 1 down vote accepted

If you're on a singular page, sometime after init and all the query variables have all ben set up you can use get_queried_object_id or get_queried_object.

<?php
if (is_singular()) {
    $post_id = get_queried_object_id();

    // or get the whole object
    $post = get_queried_object();

    // or do the first one differently
    $post_id = get_queried_object()->ID;
}

You can also just "false start" the loop and get what you need. It probably won't slow down your script: WordPress fetchs all the queried posts at once, so the database hit has already happened. You might use this if you're not a singular page and need to get the first post's ID.

<?php
// start the loop
the_post();

// get the ID
$post_id = get_the_ID();

// back to normal
rewind_posts();
share|improve this answer
    
Thank you! Where is the documentation for your first answer? I can't find that in the wordpress codex.. –  Maxwell Jan 18 '13 at 21:29
    
You can look up the fucntion themselves in the codex, but the codex is not a tutorial site: it's up to you glue everything together. –  chrisguitarguy Jan 18 '13 at 22:18
add comment

If you already have the post object saved as a variable somewhere (I assume that this is the case) you can get it's ID by $you_post_object->ID. If this is not the case then you should post some of your code so that we know what you are dealing with.

share|improve this answer
    
I don't have a post object saved in a variable (I don't know what is a post object or how to create one). And what do you mean post some of my code? All I need is to put the post ID in a variable ex: $id = get_the_ID(), but to use this function, I need to put it in a loop, and I don,t know if this is the good way to do it. –  Maxwell Jan 18 '13 at 20:42
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.