WP_Queryを使ってタグによる検索を行い、一致したタグの個数が多い順に並び替えたい
現在表示中の記事と関連する記事を表示させたいと思っています。
記事には複数のタグがつけられており、タグの一致している数の多い順に並び替えて表示したいのですが、うまい方法が分かりません。
例えば以下の様な記事が投稿されているとします。(あ〜おは投稿記事のタイトル、カッコ内の数字はタグのIDを表しています)
投稿日時古い
あ(1,2)
い(1,2,3)
う()
え(2,3)
お(1)
投稿日時新しい
投稿「あ」を表示しているときに、以下のクエリを発行して実行します。
$args = array(
'post__not_in'=>$post->ID,
'tag__in' => array(1,2),
);
$related_posts = new WP_Query($args);
if($related_posts->have_posts()){
while($related_posts->have_posts()){
$related_posts->the_post();
the_title();
}
}
すると以下のように表示されます。
お
え
い
今回の質問は、投稿「い」が一番上に表示されるようにするにはどうしたらよいか、というものです。
'tag__in'の代わりに'tag__and'を使ってクエリを発行してみたのですが、'tag__and'では投稿「い」を表示していると、関連記事が1つも表示されなくなってしまいます。(1,2,3のタグすべてを持つ記事が他にないため)
「い」を表示しているときには、「あ、え、お」という順番で表示されるようにしたいのです。(タグの一致個数が同じものの順番にはこだわりはありません)
何かよい方法はないものでしょうか?