それはおそらくPHP質問のほうが多いですが、使い方に違いがあるかどうか知りたいのですが。
global $post;
echo $post->ID;
と比較したとき
echo $GLOBALS['post']->ID;
wordPressで投稿のIDにアクセスする。
この[ answer on SOは、最初の方法の方が処理が早く、2番目の方法の方が書き込みが速いことを示しています。
私はまた、最初の方法がCodexで頻繁に言及されているのに対し、2番目の方法は the_content
filter ページで言及されていることに気づきました。
これは好みの問題だけですか?それとも、パフォーマンスとセキュリティにも影響しますか?
ありがとう
echo
だけを使用している場合でも違いはありません。違うのはunset()
です。
function test_unset_1()
{
global $post;
unset( $post );
}
function test_unset_2()
{
unset( $GLOBALS['post'] );
}
test_unset_1();
echo $GLOBALS['post']->ID; // will work
test_unset_2();
echo $GLOBALS['post']->ID; // will fail
その理由は、unset()
は最初のケースではローカル参照だけを破壊し、2番目のケースでは実際のグローバルオブジェクトを破壊するからです。
読みやすくするために、必ず$GLOBALS['post']
を使用してください。変数がどこから来たのかを確認するのは簡単です。