WordPressの検索フォーム(ウィジェット他)の話です。標準では、記事と固定ページが検索対象に含まれます。そこで、検索対象を記事だけにしたい場合の方法論です。
//---------
//検索で固定記事を除く
//----------
add_filter('posts_search', 'my_posy_search');
function my_posy_search($search) {
if(is_search()) {
$search .= " AND post_type = 'post'";
}
return $search;
}
テーマのfunctions.phpを追加すればOKです。
補足
posts_search | Hook | WordPress Developer Resources
ソースの「wp-includes/class-wp-query.php」あたりを見て確認してきてください。「apply_filters_ref_array( 'posts_search'」で検索して、その前の部分の処理をみれば、記事の処理が妥当だというのがわかるかと思います。
add_filterでフックしているロジックは、Wordpressのapply_filters(又はapply_filters_ref_array)の該当場所を見れば、うまくいかない理由とかそういうのがわかるかと思います。
バージョンが変わって仕様が変わったのか、それとも動作確認をしてないのか不明だけど、どうも正しくなさそうなものもネットで公開されてるので、自身でわかる範囲で検証したほうがよいと思います。
スポンサーリンク
コメントを残す