我想从 WordPress 的搜索栏结果中删除我们的项目。我遇到过以下代码片段来执行此操作,但是,此方法是列出所有帖子 ID。有没有办法一次性排除所有
/projects/
?
function ss_search_filter( $query ) {
if ( !$query->is_admin && $query->is_search && $query->is_main_query() ) {
$query->set( 'post__not_in', array( 1, 2, 3 ) );
}
}
add_action( 'pre_get_posts', 'ss_search_filter' );
由于这是 Divi,因此项目帖子类型是自定义的。您应该能够使用以下过滤器。注意,初始函数中存在一些错误,特别是
is_search()
和 is_admin()
是 $query
对象方法,因此应该使用 ()
来表示。另外,需要归还 $query
- 否则它将无法按预期工作。
function ss_search_filter( $query ) {
// If the query is_admin() bail
if ( $query->is_admin() ) :
return $query;
endif;
// If the query is_search and is_main_query
if ( $query->is_search() && $query->is_main_query() ) {
// set the post type to only post types you want returned.
$query->set( 'post_type', ['page', 'post' ] );
}
// Return the query.
return $query;
}
add_action( 'pre_get_posts', 'ss_search_filter' );