投稿検索に検索条件を追加したい
投稿一覧ページ、アーカイブページなどを表示するとき、
投稿検索に検索条件を追加したい。
例:
タクソノミーの○○のみ
カスタムフィールドの××のみ
全件表示したい
など
functions.php
に以下を追加する。
//WP_Query:クエリ変数オブジェクトの生成後、実際にクエリが実行される前に呼び出されます。
add_action('pre_get_posts', 'custom_pre_get_posts');
function custom_pre_get_posts($wp_query) {
//クエリを変更させたくない場合、処理を終了する。
//管理画面の場合
if (is_admin()) {
return;
}
//タクソノミーをクエリに追加する。
$tax_query = array();
$tax_query[] = array(
'taxonomy' => 'xxx',
'field' => 'slug',
'terms' => 'aaa'
);
$tax_query[] = array(
'taxonomy' => 'yyy',
'field' => 'slug',
'terms' => 'bbb'
);
$wp_query->set('tax_query', $tax_query);
//カスタムフィールドをクエリに追加する。
$meta_query = array();
$sub_meta_query = array();
$sub_meta_query['relation'] = 'OR';
$sub_meta_query[] = array(
'key' => 'ttt',
'value' => 'vvv',
);
$sub_meta_query[] = array(
'key' => 'sss',
'value' => 'uuu',
);
$meta_query[] = $sub_meta_query;
$wp_query->set('meta_query', $meta_query);
//その他をクエリに追加する。
$wp_query->set('mmm', 'nnn');
}
[2022/02/17]