読者です 読者をやめる 読者になる 読者になる

wordpressで独自のqueryから通常のqueryを生成する方法

独自のクエリ変数から標準クエリを生成して実行させる。
カテゴリ指定の検索としてcatというクエリがあり、cat=1,3,5のように複数指定が可能だが、その値を自分で選択させたい場合にこの方法が有効かと思われる。

function search_multi_category() {
        global $wp_query;

        if (is_search() && isset($_GET['multicat'])) {
                $wp_query->query_vars['cat'] = implode(',', $_GET['multicat']);
        }
}
add_action('pre_get_posts', 'search_multi_category');

これで以下のようにすると、カテゴリ選択しての検索が可能になる。

<form method="get" action="<?php bloginfo('home'); ?>">
  <label for="s"><?php _e('Search:'); ?>(テスト複数カテゴリ)</label>
  <input type="checkbox" name="multicat[]" value="1" />未分類
  <input type="checkbox" name="multicat[]" value="3" />カテゴリ1
  <input type="checkbox" name="multicat[]" value="4" />カテゴリ2
  <input type="text" name="s" id="s" size="15" />
  <input type="submit" value="<?php _e('Search'); ?>" />
</form>