「pre_get_posts」フックを検索で使う場合の処理まとめました。
検索機能を付ける場合によく利用
「pre_get_posts」は要するに「そのページで出力する投稿一覧(メイン)を出力前に条件を操作する」フックです。
なので、$_GETなどで条件を受け取ることで、検索機能が実装できます。
<?php
//基本形式
add_action('pre_get_posts',function ($query) {
//何も指定しないと全ページのクエリに影響するので
//条件を指定して動作範囲を限定
if (
is_admin()//管理画面を除く
|| !$query->is_main_query()//メインクエリ以外を除く
) {
return;
}
//queryの操作内容を追加
if ($query->is_post_type_archive('custom-posttype')) {
$query->set('orderby', 'title');
$query->set('order', 'ASC');
}
});