検索入力フォームが未入力(カラ)だとindex.phpで全件表示してしまう【wordpress】

検索入力欄に何も入力しないで検索ボタンを押すと、全件表示してしまいます。
理想の動作は、入力欄に何もない状態=>検索条件が無い時に検索ボタンを押したので、検索したけど何もヒットしなかったよ〜っていう動作になってほしい。
どうしたらいいか?

解決
  • template_redirectアクションフックを使用
  • $_GET[‘s’]の値で条件分岐

検索欄が未入力だと、index.phpを表示してしまいます。
template_redirectアクションフックを使用してindex.phpではなく、search.phpを呼び出すようにします。

function set_redirect_template(){
    if (isset($_GET['s']) && empty($_GET['s'])) {
        include(TEMPLATEPATH . '/search.php');
        exit;
    }
}
add_action('template_redirect', 'set_redirect_template');

これでsearch.phpを表示するようになります。
続いてsearch.phpで検索欄未入力時の条件分岐を追加します。

<?php
global $wp_query;
$total_results = $wp_query->found_posts;
$search_query = get_search_query();
?>
<h1><?php echo $search_query; ?>の検索結果</span></h1>
<p><?php echo $total_results; ?>件の検索結果が見つかりました。</p>
<?php if (isset($_GET['s']) && empty($_GET['s'])) : ?>
<p>検索条件が入力されていません。</p>
<?php else : ?>
<?php if ( have_posts() ) : ?>
検索欄に入力があり、検索結果がある場合の処理を記述

$wp_queryを利用すれば、検索結果数なども取得できます。
で、if (isset($_GET[‘s’]) && empty($_GET[‘s’]))で検索欄のみ入力条件分岐を書きます。

コメント

タイトルとURLをコピーしました