WordPressの検索機能で固定ページと投稿とでソートをかけたい
WordPressの検索機能で、投稿ページより固定ページを上にソートすることは、カスタムコードを追加することで可能です。これには、WordPressのpre_get_postsフックを使います。
以下は、検索結果において固定ページを投稿より上に表示するためのカスタムコード例です。
function my_custom_search_order( $query ) { if ( $query->is_search() && !is_admin() && $query->is_main_query() ) { // 固定ページを優先して表示するためのカスタムソート $query->set( 'post_type', array( 'page', 'post' ) ); $query->set( 'orderby', 'type' ); $query->set( 'order', 'ASC' ); } } add_action( 'pre_get_posts', 'my_custom_search_order' );
このコードは、テーマのfunctions.phpファイルに追加します。
固定ページを投稿より下にするにはASCの部分をDESCにすれば良いです。
このコードでは、検索クエリに対してpost_typeをpageとpostの順に設定し、orderbyをtypeに設定することで、検索結果で固定ページが投稿より上に表示されるようにしています。
さらに投稿は日付順にする場合は下記にて
function my_custom_search_order( $query ) { if ( $query->is_search() && !is_admin() && $query->is_main_query() ) { // 固定ページを優先して表示し、投稿は日付の新しい順にソート $query->set( 'post_type', array( 'page', 'post' ) ); $query->set( 'orderby', array( 'type' => 'ASC', 'post_date' => 'DESC' ) ); } } add_action( 'pre_get_posts', 'my_custom_search_order' );