我在我的函数中使用下面的代码从WP搜索中排除了某些页面。php文件。
我还需要排除名为“站点”的自定义帖子类型。
我似乎找不到与post__not_in
论点
我不想在下面的自定义帖子类型代码中删除它public => false
因为我仍然希望它有自己的url等。
有人知道如何从WP搜索中删除特定的自定义帖子类型吗?
任何帮助都会很好!
// EXCLUDE CERTAIN PAGES FROM SEARCH RESULTS (PAGE IDs IN ARRAY)
function tp_remove_pages( $query ) {
if ( ! $query->is_admin && $query->is_search && $query->is_main_query() ) {
$query->set( \'post__not_in\', array( 11,84,118,115,123,132 ) );
}
}
add_action( \'pre_get_posts\', \'tp_remove_pages\' );
SO网友:Paul G.
您可以设置所需的帖子类型,而不是枚举不需要的页面ID。
如果你愿意的话,你当然可以将这两种方法结合起来,但下面我介绍了页面、帖子,以及如果你的网站上有其他类型的文章,你可能需要的另一种类型。
e、 g.:
function tp_remove_pages( $query ) {
if ( ! $query->is_admin && $query->is_search && $query->is_main_query() ) {
$query->set( \'post_type\', array( \'page\', \'post\', \'other_custom_type_you_want\' ) );
}
}
add_action( \'pre_get_posts\', \'tp_remove_pages\' );
编辑:使用此代码“事后”修改搜索行为的另一种方法是在注册自定义帖子类型时更改其性质。为此,请使用
exclude_from_search
注册帖子类型时的参数。
参考号:https://developer.wordpress.org/reference/functions/register_post_type/
您还可以设置public
参数到false
以获得类似的结果,尽管这可能会影响您的其他岗位类型的行为。