WordPress PHPで現在表示しているカテゴリーを取得、さらにquery_postsでカテゴリーを絞り込む方法

blue-j現在表示しているカテゴリーの関連記事をjqueryのタブで別々に表示しようと行動を起こしました。
簡単に説明すると「現在のカテゴリ+その他のカテゴリ=絞った検索結果」
という構図。
結果全然うまい事いかずに、1週間以上かかってしまった。つらたん・・・
そして結局「これよりもっといいコードあるんじゃないか?」って思っている次第ありますハイ。 
僕がショボいのはさておいて、どう実装したかは続きを・・・ 


まず現在のカテゴリを取得する方法。

説明します。 

まずこの部分が現在のカテゴリーIDを取得し$cat_idに代入しています。
そして

この部分で表示したいカテゴリIDと件数を指定しています。 
catが表示したいカテゴリ。$cat_idに現在表示しているカテゴリのIDが登録されています。
showpostsが件数。今回は5件表示です。
post_not_inが表示しないIDを指定しています。$post_idなので現在表示しているページは回避されます。
そして。

<?php the_time(‘Y.m.d’) ?></span>&nbsp<a href=”<?php the_permalink(); ?>”><?php the_title(); ?>
ここでは表示する部分を指定しています。
<?php the_time(‘Y.m.d’) ?>
がページを投稿した年月日
<a href=”<?php the_permalink(); ?>”><?php the_title(); ?>
が投稿のタイトル。そしてそれにリンクを登録しています。 

これで現在表示されているカテゴリの最新記事5件が表示されます。

現在のカテゴリとその他のカテゴリーを絞り込んで表示する方法(親カテゴリのみ)。 
これは子カテゴリが無いカテゴリーのみで実装できました。

 前と違う点は

です。
まず前述した’cat’を’category_and’に変え、指定したいIDを追加します。
僕の場合は($cat_id)と親カテゴリーID(25)です。必ず間に,を入れましょう。
他は何も変わりません 。これで動きました。

現在のカテゴリとその他のカテゴリーを絞り込んで表示する方法(子カテゴリを含む)。
これは親カテゴリの中にある子カテゴリも表示したい場合につかいます。
凄く無駄な記述がある気がするので、これよりイイものが有ったらスグ変えるのをお勧めします。

前とはちょっと記述が違います。 
‘tax_query’とはより詳しく検索条件を設定できるものです。

まず表示したいカテゴリを指定。

まずtaxonomyにcategoryを入れます。自作した物でしたらその名前を入れてください。
termsでカテゴリーIDを指定します。
include_childrenはfalseに
operatorをINに(必ず大文字に!)

そしてここからは表示したくないカテゴリを指定します。

‘operator’=>’NOT IN’が表示しないという設定。

これで何とか表示できました。
ただquery_postsちょっと重い気がします。
ちなみにこんな話も出てきている様です。

query_postsを捨てよ、pre_get_postsを使おう


実装にあたって参考にしたサイト
http://elearn.jp/wpman/column/c20110906_01.html

http://www.warna.info/archives/287/

やってみて思った事は自分はまだまだッス・・・ 

コメント

タイトルとURLをコピーしました