サポート » 使い方全般 » サイト内検索でキーワードが未入力の場合

  • 解決済 poncyan

    (@poncyan)


    <?php if (isset($_GET['s']) && empty($_GET['s'])) {
        echo 'キーワード未入力';
      } else {
        echo '“'.$_GET['s'] .'”の検索結果:'.$wp_query->found_posts .'件';
      }
    ?>
    
    <?php query_posts($query_string.'&posts_per_page=-1'); ?>
    <?php if (have_posts()): ?>
    <?php while(have_posts()): the_post(); ?>
    <div>
    	<h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
    </div>
    <?php endwhile; ?>
    
    <?php else: ?>
    キーワードに該当するページが見つかりません
    
    <?php endif; ?>

    search.php の中身です。
    サイト内検索でキーワードが未入力だと、投稿記事しか検索結果に表示されません。
    固定ページも含む場合はどうしたら良いかご教示いただきたいです。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • @poncyanさん

    はじめまして。

    通常のテーマであれば、検索キーワードが未入力の場合でも固定ページはヒットするはずです。
    まずは、以下を確認してみていただけないでしょうか。

    1. お使いのテーマは何でしょうか。もしくは自作テーマでしょうか。
    2. 検索結果に影響を与えるようなプラグインは使用されていないでしょうか。一度、プラグインを全て無効にしてみて下さい。
    3. コード内のquery_posts~は、検索結果を全件表示するために挿入されているかと思いますが、一度この一文を削除して改善がないかお試し下さい。

    ちなみに、query_postsは公式に非推奨となっています。

    代わりに、pre_get_postsアクションフック内でis_searchで分岐して表示件数をコントロール出来ますので、よろしければ調べてみて下さい。

    スレッド開始 poncyan

    (@poncyan)

    ありがとうございます。
    全件表示のを削除して、代わりにfunction.phpに全件表示のコードを入れて解消されました。

    function set_nopaging($query) {
        if (!is_admin() && $query->is_main_query() && is_search()) {
            $query->set('nopaging', 1);
        }
    }
    add_action('pre_get_posts', 'set_nopaging');
2件の返信を表示中 - 1 - 2件目 (全2件中)
  • このトピックに返信するにはログインが必要です。