php - 在档案页面上隐藏自定义帖子类型
问题描述
我有一个 wordpress 档案页面,它显示了我创建的自定义帖子类型,我实际上想要隐藏它。
我使用插件 CPT UI 来创建帖子类型“事件”
在我的博客上,我有一个标记为精选 (website.com/category/featured/) 的类别,在此精选类别页面上,我显示了一些我不想显示的事件 CPT。
我在我的 functions.php 文件中尝试了以下代码但不起作用:
add_action( 'pre_get_posts', 'exclude_cpt' );
function exclude_cpt( $query ) {
if ( $query->is_category('featured') ) {
$query->set( 'post_type', array('event') );
}
return $query;
}
想法??
解决方案
$query->set( 'post_type', array('event') );
您不排除事件。你包括它。
要排除事件,您必须传递您拥有并想要显示的所有帖子类型,“事件”除外
像这样。
如果您没有任何自定义帖子类型。
$query->set('post_type', array( 'post', 'page' ) );
或者
$query->set('post_type', array( 'post', 'page', 'post_type_1', 'post_type_2' ) );
所以你的代码应该是这样的
add_action( 'pre_get_posts', 'exclude_cpt' );
function exclude_cpt( $query ) {
if ( $query->is_category('featured') ) {
$query->set( 'post_type', array( 'post' ) ); // this will display only posts and pages
}
return $query;
}