It's probably more of a PHP question, but I would like to know if there are any differences in using

global $post;
echo $post->ID;

when compared to

echo $GLOBALS['post']->ID;

to access the ID of a post in WordPress.

This answer on SO suggests that the first method is quicker to process, while the second method is quicker to write.

I also noticed that the first method is often mentioned in the Codex while the second method is mentioned on the_content filter page.

Is this only a matter of preference? Or does it come to performance and security too?


  • 1
    Avoid globals when you can. In your case, you can use get_the_ID() instead Nov 21, 2012 at 8:59
  • Yes, I usually use get_the_ID(), but any particular reason for avoiding using globals?
    – RRikesh
    Nov 21, 2012 at 10:00
  • 3
    A global variable can be removed or changed in future updates, while a function will always return what you expect. And if it gets deprecated, you'll get notified about this Nov 21, 2012 at 11:14

1 Answer 1


There is no difference when you are using just echo. What works different is unset():

function test_unset_1()
    global $post;
    unset( $post );
function test_unset_2()
    unset( $GLOBALS['post'] );

echo $GLOBALS['post']->ID; // will work

echo $GLOBALS['post']->ID; // will fail

The reason is that unset() destroys just the local reference in the first case and the real global object in the second.

For readability use always $GLOBALS['post']. It is easier to see where the variable is coming from.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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