der Gegenwart

どうでもいい雑記その121

最近ようやくget_postsの使い方が分かった気がする。あとアレ。特定のカテゴリ且つ特定のタグを持つ記事の抽出法も。

query_posts()の仕様だか何だか知らないけど、普通にパラメータ指定しても特定カテゴリーと特定のタグ両方を満たす記事が取り出せません。下みたいに書いてもアウト。何故か白紙になったりします。

<?php query_posts('cat=1&tag=10'); ?>

で、日本語のページには情報があまりなかったので、海外フォーラム見ていたら解決法っぽいのが。配列でカテゴリーとタグを入れてやると上手く取り出せるみたい。

ただ、query_posts()でループ条件指定すると、ページナビゲーション関係が上手く動作しないので、get_query_var()でページのパラメータを取り出して、それもquery_posts()に入れてやる必要がある、と。

まとめるとこんな感じ?

<?php
$category_id = 任意の値;
$current_tag = single_tag_title("", false);
$current_paged = intval(get_query_var('paged');
$query = array('cat'=>$category_id, 'tag_slug__and'=>array($current_tag), 'paged'=>$paged);
query_posts($query);
?>

こんな感じで記事を取り出すループ条件を指定すると上手くいくんじゃないかと思いますです。もっともカテゴリーとタグの同時指定をするってのは、かなり特殊な状況だと思うけど。たまたま仕事でそんなことせにゃならんかったので、調べたついでにメモっておきます。上手く動作するかどうかは謎。

あー、ついでに言うと上のはtag.php内で使うことを想定してるので、category.php内で特定のタグをもつ記事を表示させたい場合は若干書き換えないとダメです。

参考記事