検索結果のページのみを返すようにしています。
これは働いています:
/?s=term&post_type=post
投稿のみが返され、ページは返されません。
しかし逆はうまくいきません。
/?s=term&post_type=page
これはページと投稿を返しています。
ページだけを返すにはどうすればいいですか?
編集
言及するのを忘れたので、私はユーザーが検索結果ページの上部にある2つのリンクをクリックできるようにしています。
<a href="/?s=term&post_type=post">Search Only Posts</a>
<a href="/?s=term&post_type=page">Search Only Pages</a>
そのため、すべての検索結果をどちらか一方だけに設定することはできません。
pre_get_posts
のコールバックごとに投稿タイプを強制することができます。
is_admin() || add_action( 'pre_get_posts', function( \WP_Query $query ) {
$post_type = filter_input( INPUT_GET, 'post_type', FILTER_SANITIZE_STRING );
if ( $post_type && $query->is_main_query() && $query->is_search() )
$query->set( 'post_type', [ $post_type ] );
});
それでも他の投稿タイプが含まれている場合は、そのフックに2番目のコールバックが登録されています。見つけよう。それはテーマやプラグインかもしれません。