WordPress カテゴリ選択で条件付き絞り込みが行える検索フォームを実装

WordPress 6.4.3
広告WordPress・PHP を学べる本

Amazonのアソシエイトとして、WordPress functions.phpは適格販売により収入を得ています。

概要説明

キーワード、カテゴリー選択で条件指定が行える絞り込み検索フォームを実装するカスタマイズ。ショートコードにてトップページ、サイドエリアなど自由に配置できます。

絞り込み検索フォーム用のhtml定義ファイルを作成 ( searchform.php )

searchform.php
<?php
/*----------------------------------------------------
 絞り込み検索フォーム ( searchform.php )
----------------------------------------------------*/
?>
<form method="get" id="searchform" action="<?php echo esc_url( home_url( '/' ) ); ?>">
    <input type="text" name="s" id="s" value="<?php the_search_query(); ?>" />
    <?php
        if( isset( $_GET['cat'] ) ) {
            $selected = absint( $_GET['cat'] );
        } else {
            $selected = 0;
        }
        wp_dropdown_categories( array(
            'orderby'         => 'id',
            'hide_empty'      => true,
            'show_option_all' => 'カテゴリー選択',
            'selected'        => $selected,
        ) );
    ?>
    <input type="submit" class="srcbtn" value=" 検 索 ">
</form>

searchform.php アップロード

テーマディレクトリの中に searchform.php をアップロードします

functions.php と同じフォルダにアップロードしてください。

検索フォームの呼び出し – PHP ( テンプレート )

get_template_part('searchform');

ショートコードで呼び出せるようにする

functions.php
/*----------------------------------------------------
 絞り込み検索フォームを表示させるショートコード
----------------------------------------------------*/
if ( !function_exists( 'shortcode_searchform' ) ){
    function shortcode_searchform () {
        ob_start();
        get_template_part('searchform');
        return ob_get_clean();
    }
    add_shortcode('search', 'shortcode_searchform');
}

動作確認

当サイトのトップページ上部に設置している検索フォームがこちらの機能になります

除外したいカテゴリーを指定したい場合

// wp_dropdown_categories の条件指定(配列)に下記を追加
'exclude' => 'カテゴリーID', // カンマ区切りで複数指定

URL の cat の値は absint で数字にしてから使います(?cat=1&exclude=… のような値を混ぜられても、条件が書き換わりません)。条件は配列で渡します。

複数のときは、カンマ(,)で区切ります。

検索結果ページの調整

form の action で指定する先にもよりますが、サンプルのコードでは、テーマに search.php がなければ index.php が検索結果のページになります。

WordPress Developer Resources

SiteBeacon(サイトビーコン)

サイトが止まったら、すぐに気づける。

ホームページを 5 分ごとにチェックして、止まったとき・エラーが出たとき・SSL やドメインの期限が近いときに、メールでお知らせします。2 サイトまでは、ずっと無料で使えます。

SiteBeacon を見る サイトを直す相談をする

監視で気づいたあとの直す作業も、同じ担当がお受けします。