WordPressの検索をちょっとだけ思い通りにするコード

検索対象絞り込みWordPress で検索対象を自分の思うように絞り込みたい時にこの方法はどうでしょうか? 例えば、商品や情報は検索対象にしたいけれど、会社案内や採用情報、あるいはサブコンテンツはヒットさせたくない……という場合です。2箇所ソースの編集が必要ですが、考え方も編集そのものもとても簡単なので、大いに活用の道があると思います。

まず、検索対象にしたい記事はすべて「投稿(post)」で書いておきます。

[1] コードにちょっとおまじない
wp-includes/query.php の1652行目当たりにある下記のコードを編集(◆=デフォルトは空 → post とする)。

if ( $this->is_search )
$q['post_type'] = 'any';
else
$q['post_type'] = '◆';

if ( $this->is_search )
$q['post_type'] = 'any'; // === HERE
else
$q['post_type'] = 'post';

[2] カテゴリの絞り込み
特定のカテゴリのみ検索対象にしたい時や、特定のカテゴリのみ除外したい時など、サイトの内容に合わせてどちらかを使う。

特定のカテゴリを検索対象から除外する時▼


<form method="get" id="searchform" action="<?php bloginfo('url'); ?>/">
<input type="hidden" value="-7,-8,-11" name="cat">

特定のカテゴリのみ検索対象にする時▼


<input type="hidden" value="4,5,6" name="cat">

コメント

  1. ohiri より:

    絞り込み検索の方法を教えて頂きましてありがとうございます!
    ひとつ質問なのですが、2] カテゴリの絞り込み の場合は、どちらのphpファイルを編集すればよろしいのでしょうか?

    ど素人なもので、教えて頂けると大変たすかります。

    よろしくおねがいいたします

  2. marimo より:

    ohiri さん

    ご質問、ありがとうございます。確かに言葉が足りず、WordPress にそれほど慣れていない方には、何の事やら……という記事ですね。すみません。

    お答えですが、修正するファイルは、検索窓がおいてあるphpファイルです。ヘッダーの場合もありますし、サイドバーやフッターの場合も……。

    該当するphpファイルをテキストエディタで開き、「

    https://cook-le.com/wp_blog/412.html で紹介した娘のところに来ているんです。それでも日本の方にお返事出来る! 本当にインターネットって凄いですね-。
  3. sato より:

    失礼しました。
    コメント内容に誤りがありましたので訂正させていただきます。
    ーーーーーーーーーーーーーーーーーーーー
    こんにちは、絞り込み検索について教えていただければと思います。
    以下のコードで、検索ボックスとドロップダウンによる絞込みを実現したいのですがうまくいきません。
    ———————————————-
    <form method=”get” id=”searchform” action=”/index.php” style=”margin:10px 0 10px 10px;”>
    <label class=”label”>条件指定検索</label>
    <input type=”text” name=”s” id=”s” style=”border:1px solid gray;padding:0;margin:0;height:23px;width:185px;background-color:#FFFFD6;” />
    <input type=”hidden” id=”searchsubmit” value=”search” />
    <input type=”submit” name=”btnG” value=”検索” style=”padding:0;margin:0;width:45px;text-align:center;height:24px;font-size:12px;” />
    <?php wp_dropdown_categories(‘hide_empty=0&show_count=1&child_of=5&hierarchical=1&class=kenselect&show_option_all=■料金を選択’);
    wp_dropdown_categories(‘hide_empty=0&show_count=1&child_of=3&hierarchical=1&class=moneyselect&show_option_all=■地域を指定’);?>
    <?php $tags = get_tags(); if ( $tags ) : ?>
    <select name=’tag’ id=’tag’>
    <option value=”” selected=”selected”>タグ選択</option>
    <?php foreach ( $tags as $tag ): ?>
    <option value=”<?php echo esc_html( $tag->slug); ?>”><?php echo esc_html( $tag->name ); ?></option>
    <?php endforeach; ?>
    </select>
    <?php endif; ?>
    </form>
    ———————————————–
    表示は以下のようになります
    ———————————————–
    キーワード:[テキストエリア][検索ボタン]
    料金の指定:[カテゴリのドロップダウン1]
    地域を指定:[カテゴリのドロップダウン2]
    タグを指定:[タグのドロップダウン]
    ———————————————–
    この検索ボックスで検索をかけているのですが、検索結果が思い通りになりません。
    例えば、「料金:2万円、地域:神奈川県」のカテゴリに分類された記事があるとします。
    そして、「料金:2万円、地域:東京都」(キーワードとタグは未指定)で検索をかけます。
    この場合、料金の方がマッチしているので、投稿がヒットします。しかし、地域はマッチしていません。
    私は、指定した条件が全てがマッチしたときに投稿を表示させるようにしたいのですが、これは実現可能でしょうか?
    それと、タグをチェックボックスにして、複数選択できるようにカスタマイズできないでしょうか。
    なかなか情報が見つからずに困っている中、こちらのブログにたどり着きました。ぜひアドバイスをいただけるとありがたいです。

  4. marimo より:

    sato さん

    はじめまして! ご質問ありがとうございます。

    ただ、ここまでの検索機能を必要とした事がないので未知の領域(笑)です。なので、正しい答えを出せそうにありません。折角たくさんの説明を書いてくださったのに、本当に申し訳ないです。

    が、タイムリーな事に今日、「はてな」経由で
    「WordPressのサイト内検索の検索条件をカスタマイズする」という記事を見つけました。ちょっと参考になるのではないかと……。

    http://www.webopixel.net/wordpress/584.html

    目的の検索結果が得られるようになるのをお祈りしています。いつか教えていただく時があるかもしれませんね。

  5. sato より:

    回答ありがとうございます。
    カスタムフィールドに値を入れないと、複数の条件を指定しての検索は出来ないのでしょうか、、、。
    とりあえず試してみます。
    ありがとうございました。

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