ループの外で記事IDを参照する方法 WordPress

公開:2016-03-14 / WordPress 制作・開発 / , , ,
更新:2017-02-07

WordPressでオリジナルのテーマをガシガシ作りこんでいると、

 

ループの外で自分の記事IDを参照したい

 

というケースがたまにあります。

 

僕が今までに経験した具体的な例としては、以下とおりです。

  • sidebar.phpに、特定の記事のときだけ広告バナーを表示させたい
  • footer.phpに、特定の記事の時だけ関連記事のリンク一覧を表示させたい
  • header.phpに、特定の記事の時だけ広告バナーを表示させたい
  • function.phpに、特定の記事の時だけ実行する関数を実装したい

 

記事IDを取得するには、

を使えばいいのですが、この関数はループ内でしか使えず、おまけにecho付きなので、ブラウザへの表示までしてしまうため、上記のような場合にif文を使って分岐させたい場合は使えません。

 

そこで、ループ外で変数としてIDを参照できないかと調べたら、やはりありました。

 

何度も調べそうだったので、備忘録を兼ねて紹介したいと思います。

 

ループ外で記事IDを参照する関数

WordPressで用意されている記事IDを参照する関数は、

を使えばOKです。

 

僕がテストとして使っているWordPressのサイトにサンプルページを作っていますので、合わせて参考にしてください。

http://penguinweb.net/213.html
このテストページでは、記事ID:213のときのみsidebar.phpに「MISLEAD」へのリンクが表示されるようにしています。

 

ただ、この「get_th_ID()」ですがWordPressの関数リファレンスのページを見ると、

 

get_the_ID()はループの中でのみ使用することができます

 

という記載がありますが、ループの外でも使えます。

(使っても問題ありません)

 

気になったので、その理由を説明していきます。

 

get_the_ID()の中身

この関数は「wp-includes/post-template.php」に記述されており、その中身は以下のとおりです。

 

ご覧のとおり、グローバル変数$postの中のIDを参照しているだけなのです。

 

そのため、実は

と記述しても記事IDを参照できます。

 

さらに、$postに入っているものはこれだけではありません。

 

以下のソースを記述して中身を表示させると、

以下の情報が参照できます。

 

いろいろな値が取得できるので、カスタマイズの幅を広がるかと思います。

WordPressのテーマ改修やオリジナルテーマ作成の際には、お世話になることも多いと思います。

 

みなさま素敵なWordPressライフを!

 

おまけ

ループの外で、自ページのカテゴリーを表示させたい場合は、上記の記事IDを利用することで取得できます。

ソースは以下のとおりです。

 

これを利用すると、特定のカテゴリのページのみに広告バナーを出したりすることができます。

 


コメント一覧

コメントはありません

コメントを残す

*

© yukio iizuka All Rights Reserved...