

現在表示中の記事と関連する記事を表示させたいと思っています。  
記事には複数のタグがつけられており、タグの一致している数の多い順に並び替えて表示したいのですが、うまい方法が分かりません。

例えば以下の様な記事が投稿されているとします。（あ〜おは投稿記事のタイトル、カッコ内の数字はタグのIDを表しています）

投稿日時古い  
あ（1,2）  
い（1,2,3）  
う（）  
え（2,3）  
お（1）  
投稿日時新しい

投稿「あ」を表示しているときに、以下のクエリを発行して実行します。

[code]

    $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();
        }
    }
    
[/code]

すると以下のように表示されます。

[code]

    お
    え
    い
    
[/code]

今回の質問は、投稿「い」が一番上に表示されるようにするにはどうしたらよいか、というものです。

'tag__in'の代わりに'tag__and'を使ってクエリを発行してみたのですが、'tag__and'では投稿「い」を表示していると、関連記事が1つも表示されなくなってしまいます。（1,2,3のタグすべてを持つ記事が他にないため）  
「い」を表示しているときには、「あ、え、お」という順番で表示されるようにしたいのです。（タグの一致個数が同じものの順番にはこだわりはありません）  
何かよい方法はないものでしょうか？


CC BY-SA 3.0
2015-10-11T14:07:41.907
17536
2015-10-11T14:07:41.907
9498
question
wordpress
WP_Queryを使ってタグによる検索を行い、一致したタグの個数が多い順に並び替えたい