WordPressで今見ているカテゴリーのIDを取得し、query_postsに代入(改)
先日、WordPressで今見ているカテゴリーのIDを取得し、query_postsに代入という記事を投稿しておりました。
プログラムさっぱりだけどそれなりにできんじゃん♪と悦に浸っていたら、うちのプログラマからこれ違うよってツッコまれました。うへー。
やっぱ餅は餅屋ですな。
igarashiが3時間かかってどうにかこうにかカタチっぽいものにしたPHPをプログラマは10分で何とかしてしまいましたよすごいなオイへこむわorz
<?php
foreach((get_the_category()) as $cat) {
$cat->cat_ID ;
}
$query = 'cat=' . $cat->cat_ID. '&showposts=1';
query_posts($query);
?>
↑前回の自力PHP
<?php
foreach((get_the_category()) as $cat) {
$cat_id = $cat->cat_ID ;
break ;
}
$query = 'cat=' . $cat_id. '&showposts=1';
query_posts($query) ;
?>
↑うちのプログラマの修正PHP
前回のやつとの違い
・取り出した現カテゴリーIDである $cat->cat_ID を、さらに $cat_id という要素に代入。
・break で foreach のループを1回で終わらせる
あとは、一緒ですね。
現カテゴリーIDが代入されている $cat_id という要素を query_posts に指定。
プログラマ曰く、前回のやつの問題点っていうのが2つ。
1つめ。$cat->cat_ID の記述だけだと、カテゴリーID取得しただけでおしまいだから、それを何かに代入する必要がある。
2つめ。カテゴリーを複数選択している場合、この記述だとループしてカテゴリーIDを複数もってきてしまうから、break でループから抜ける必要がある。
というわけです。
なんかもー、奥が深いとゆーよりかは底なし沼という感じですな。
wordpressで親カテゴリーの表示画面で、子カテゴリーのエントリーを表示しないという情報を探していたらここにたどり着きました。
問題の解決の糸口になりましたので大変ありがたく思っております。