WordPressでサイトを作るときに「カテゴリのタイトル一覧をサイドバーに表示」みたいなことはよくやると思います。ということで最近記述したコードを考察とともにメモしておきたいと思います。
今回使ったコード
<?php $posts = get_posts('numberposts=0&category=5'); global $post; ?> <?php if($posts): foreach($posts as $post): setup_postdata($post); ?> <?php the_title(); ?> <?php endforeach; endif;?>
使い方
使い方としては「numberposts=」のところに取得したい記事数の値を入力すればその数だけ取得されます。
「category=」の部分にはcategoryのIDを入力します。
「 the_title(); 」が記述されている部分に表示させたいものを記述します。
考察
上記のコードはほぼこちらで紹介されていたものです。
実際のサイトではこれを記述し、正常に動いたので全く問題ないのですが中身を見ると腑に落ちない部分が結構ありました。
まずどういった処理をしているのかすら分らなかったのが「global $post」と「setup_postdata($post)」の部分。
「global $post」は「$post」をグローバルな$postですよと宣言させていたみたいです。
「setup_postdata」の方は「$post」を正常に動かすための関数のようです。例えば「the_title()」とかを正常に作動させる。
という意味だと思います。たぶん。
ちなみにこの「setup_postdata」の方は記述しなくても正常に動作しました。
次に「$post」を何故グローバル宣言しなければならないのかがよく分らなかったのですが、「the_title()」とかがそもそもグローバルな「$post」
から値を取ってきているんだなということで納得しました。
ということで今後もガシガシ使うと思います。
LIGはWebサイト制作を支援しています。ご興味のある方は事業ぺージをぜひご覧ください。