検索からページを削除するにはどうすればよいですか?


13

サイト内のページを検索する必要はなく、投稿のみを検索したいのですが、方法はありますか?ありがとう

search 

回答:


28

以下は、ページ投稿タイプが検索不能になるようにする必要があります。

function remove_pages_from_search() {
    global $wp_post_types;
    $wp_post_types['page']->exclude_from_search = true;
}
add_action('init', 'remove_pages_from_search');

そのコードはどこに配置しますか?ありがとう

テーマのfunctions.phpに配置できます。
prettyboymp

ひどく感謝します。私はちょうどそれを貼り付けコピーして、それが完璧に動作します

13

functions.phpの以下もうまく機能します。

//Remove pages from search results
function mySearchFilter($query) {
if ($query->is_search) {
$query->set('post_type', 'post');
}
return $query;
}
add_filter('pre_get_posts','mySearchFilter');

shuoldがソリューションになります。よりエレガントで、よりメンテナンスしやすい。上記のhteは、投稿タイプのパラメータを変更します。これは検索クエリ自体です。+1
kaiser

「ページ」投稿タイプの投稿タイプオブジェクトを変更することは、より良い解決策です。このソリューションは、すべての検索クエリに対して投稿タイプを強制的に「投稿」として設定します。これにより、サイトに存在するカスタム投稿タイプが検索に表示されなくなります。'page'投稿タイプオブジェクトのexclude_from_searchプロパティをグローバルに設定すると、このプロパティのチェックに依存するすべてのコードに正しい情報が含まれることになります。
-prettyboymp

少しより多くの情報とやや関連リンク:codex.wordpress.org/...
its_me

bbpressではうまく機能しますが、トピックは表示されないため、あまり良くありません。「$ wp_post_types ['page']-> exclude_from_search = true;」を使用 良いオプションのようです
Kishore Sahoo

0

これをsearch.phpに入れてください

<?php if (is_search() && ($post->post_type=='page')) continue; ?>

このコードのすぐ下-> <?php if ( have_posts() ) : while ( have_posts() ) : the_post();?>

詳細はこちらをご覧くださいhttp://wordpress.org/support/topic/possible-search-only-posts-exclude-pages


別のテーマからsearch.phpを取得しても機能しませんか?ありがとう

はい。最初に空のsearch.phpを作成してから、index.phpからコードをコピーして貼り付けます。その後、私が上で言ったことをします。
アンドリューク

1
実際には、@ prettyboympのコードを使用する必要があります。その方が簡単で、あなたが尋ねたことをします。私はそれをテストしました。..あなたがしたい場合
andrewk

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.