В WP_Query () есть аргумент post__not_in, в котором вы можете исключить определенные идентификаторы постов.
Вы должны создать новый WP_Query внутри вашего search.php и использовать текущие $ query_args, а затем добавить свой 'post__not_in'.
Если вы хотите сделать его более динамичным, вы также можете встроить метаданные поста, в которых вы можете выполнить мета-запрос и исключить все, для которых выбрана опция «исключить». (найдите '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);
}
}
register_post_type