サポート » 使い方全般 » 検索結果画面で固定ページを優先させたい

  • 検索結果画面(search.php)で固定ページを優先させて表示したい。
    第2ソートは投稿ページの最新順です。
    よろしくお願いします。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • こんにちは

    投稿タイプ(’page’,’post’)で昇順、日付で降順でどうでしょうか?

    function my_search_custom( $query ) {
    	if ( !is_admin() && $query->is_main_query() ) {
    		if ( $query->is_search ) {
    			$query->set( 'orderby', array( 'post_type' => 'ASC', 'date' => 'DESC' ) );
    		}
    	}
    }
    add_action( 'pre_get_posts','my_search_custom' );
    トピック投稿者 terrysway

    (@terrysway)

    ありがとうございます。
    あと、【r】から始まるカスタム投稿があります。
    post → カスタム投稿 → pageとしたいです。
    可能でしょうか?
    よろしくお願いします。

    post → カスタム投稿 → pageとしたいです。

    固定ページが優先ではないのでしょうか?
    post は投稿で、page は固定ページですが・・・。

    とりあえず、サンプルのコードは、post->カスタム投稿->page の順としました。
    固定ページを優先したい場合は、post と page を入れ替えてください。
    また、コード内の「カスタム投稿」は実際のカスタム投稿タイプを記述してください。
    なお、前回のコードは不要なので削除してください。

    functions.php 等に

    function my_search_posts_orderby( $orderby ) {
    	if( !is_admin() && is_search() ) {
    		$orderbys = array();
    		$orderbys[] = "CASE post_type WHEN 'post' THEN 1 ELSE 2 END";
    		$orderbys[] = "CASE post_type WHEN 'カスタム投稿' THEN 1 ELSE 2 END";
    		$orderbys[] = "CASE post_type WHEN 'page' THEN 1 ELSE 2 END";
    		$orderbys[] = 'post_date DESC';
    		$orderby = implode( ',', $orderbys );
    	}
    	return $orderby;
    }
    add_filter( 'posts_orderby','my_search_posts_orderby' );
    トピック投稿者 terrysway

    (@terrysway)

    勉強になりました。
    postとpage逆でしたね^^;
    ありがとうございます。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • トピック「検索結果画面で固定ページを優先させたい」には新たに返信することはできません。