回答:
でWP_Query()あなたは、特定のポストIDのを除外することができます「post__not_in」引数があります。
search.php内に新しいWP_Queryを作成し、現在の$ query_argsを使用してから、 'post__not_in'を追加します。
より動的にする場合は、メタクエリを実行して「exclude」がチェックされているものをすべて除外できる投稿メタを組み込むこともできます。(中に'register_meta_box_cb'を調べるregister_post_type)。
例えば、
add_action('pre_get_posts','wpse67626_exclude_posts_from_search');
function wpse67626_exclude_posts_from_search( $query ){
if( $query->is_main_query() && is_search() ){
//Exclude posts by ID
$post_ids = array(7,19,21);
$query->set('post__not_in', $post_ids);
}
}
すべてのページを検索結果から除外する(つまり、手動でページIDを指定する必要がない)ために、@ EricHolmesの関数の改良版を次に示します。
add_action( 'pre_get_posts', 'wpse67626_exclude_pages_from_search' );
function wpse67626_exclude_pages_from_search( $query ) {
// Manually supply Post/Page IDs to exclude from search results
// $exclude_page_ids = array( 7, 19, 21 );
// Or just get all page IDs
$exclude_page_ids = get_all_page_ids();
if (
!$query->is_admin &&
$query->is_search &&
$query->is_main_query() &&
!empty( $exclude_page_ids )
) {
$query->set( 'post__not_in', $exclude_page_ids );
}
}
より詳しい情報:
(代替)あなたが何をしているのかを考えるexclude_from_search
と、page
投稿タイプをに設定することができますがtrue
、これは検索から投稿タイプを除外するための最良の方法のようです。@prettyboympの回答を参照してください。
より詳しい情報:
register_post_type