Front Page フォーラム 使い方全般 検索結果をカスタム投稿タイプ順に並べる

1件の投稿を表示中 - 1 - 1件目 (全1件中)
  • 投稿者
    投稿
  • #6200
    FirstElement 宮澤
    キーマスター

    「検索対象の投稿タイプ」に複数の投稿タイプを指定した場合、検索結果においては投稿タイプ毎にソートしたい場合があるかと思います。現状、プラグインの機能として検索結果を投稿タイプ順に並べる機能はありませんが、以下のコードをテーマのfunctions.phpに記述することで、指定した投稿タイプの順に記事をソートできます。

    function change_orderby_posttype( $orderby, $wp_query ){
        if( ! $wp_query->is_admin && $wp_query->is_search ) :
            global $wpdb;
           
            $orderby =
                "
                CASE WHEN {$wpdb->prefix}posts.post_type = 'kyujin' THEN '1' 
                     WHEN {$wpdb->prefix}posts.post_type = 'page' THEN '2' 
                     WHEN {$wpdb->prefix}posts.post_type = 'post' THEN '3' 
                ELSE {$wpdb->prefix}posts.post_type END ASC, 
                {$orderby}";
        endif;
        return $orderby;
    }
    add_filter( 'posts_orderby', 'change_orderby_posttype', 10, 2 );

    上記の例では、3つの投稿タイプの並び順を指定しています。それぞれ投稿タイプのスラッグ「kyujin」「page」「post」を条件にしていますが、そのままでは任意に並べ替えできないのでそれぞれ「1」「2」「3」という数値に置き換えることで並び順を指定しています。その後 $orderby で既存の並び順を従えるので、投稿タイプで大きくソートした上で、その各投稿タイプの記事の並びを、設定画面の「検索結果の並び順」でソートできます。

1件の投稿を表示中 - 1 - 1件目 (全1件中)
  • このトピックに返信するにはログインが必要です。

FE Advanced Search

¥59,800

  • サイト数無制限
  • 技術サポート回数無制限
  • 将来アップデート無料

「こんな検索できる?」「PHPやCSS詳しくないのだけど…」など、わからないことやご不安がありましたらお気軽にご相談ください。