サポート » 使い方全般 » 複数のカスタム投稿を対象(固定ページを除く)にした検索結果の表示

  • 解決済 mikamo

    (@mikamo)


    複数のカスタム投稿を対象にした、検索結果の表示に関しての質問です。

    これまで、固定ページを除外した、
    複数のカスタム投稿を含む、投稿のみの検索結果を、
    function.php内に以下のような形で記述することで実現していました。
    検索フォームは、ヘッダー部分に全ページ共通で設置しています。

    ▼共通フォーム部分の記述

    <form method="get" id="searchform" action="<?php bloginfo('url'); ?>/">
    <dl>
    <dt>サイト内検索</dt>
    <input type="text" value="<?php the_search_query(); ?>" name="s" id="s">
    <input type="submit" id="searchsubmit" value="">
    </dl>
    </form>

    ▼fucntion.php内の記述

    function SearchFilter($query) {
    	if ( !is_admin() && $query->is_main_query() && $query->is_search() ) {
    		$query->set('post_type', array('post', 'news', 'topics', 'faq', 'blog'));
    	}
    	return $query;
    }
    add_filter('pre_get_posts','SearchFilter');

    今回、ニュースページ内に、カスタム投稿「news」のみを対象とした検索フォームを設置することとなり、
    以下の記事を参考に実装してみました。

    WordPressで特定のカスタム投稿内だけ検索する検索フォーム

    すべての投稿を対象(固定ページを除く)にした検索結果を「search.php」で表示させ、
    newsのカスタム投稿からの検索は、テンプレートを分け、
    「search-news.php」を利用して表示させたいと思い、
    上記サイトを参考にさせていただいたのですが、
    この方法ですと、前述の記述で、投稿記事のみ表示されていた検索結果で、
    固定ページが除外できなくなってしまいました。

    ですので、固定ページの除外のため、function.phpに記述していた部分を除き、「search.php」に表示させたいカスタム投稿だけを表示させるように記述を変更したいと思っております。

    以下の記述で、ニュースだけの検索結果を表示させることはできました。

    ▼カスタム投稿「news」のみの記事を検索結果に表示(search-news.php内に記述)

    <?php
    $paged = get_query_var('paged');
    query_posts($query_string . '&post_type=news&posts_per_page=-1&paged=' . $paged);
    ?>

    今回、投稿タイプが、「post」「news」「topics」「faq」「blog」の5つとなっているので、
    「search.php」内では、上記の5つを指定できればと思ったのですが、
    こういった場合に、どうやって複数の投稿を指定すれば良いのかわからない状態となってしまっております。

    WordPress初心者で理解が足りず、大変申し訳ないのですが、
    ご教示いただければと思いますので、よろしくお願いいたします。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • functions.phpでpre_get_postsフィルターを設定するときに、使用しているテンプレート名で条件分岐したらどうでしょうか。
    search.phpのときとsearch-news.phpのときでpost_typeの配列を変えたらできないですかね。

    [WordPress] 使用しているテンプレート名を取得する

    >ikaring様
    長らく放置してしまった形になりまして、申し訳ありません…。

    お教えいただいた内容でちょこちょことやってみたところ、
    無事に分岐できました。

    ありがとうございました!

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「複数のカスタム投稿を対象(固定ページを除く)にした検索結果の表示」には新たに返信することはできません。