亲爱的Stackoverflow社区
我有一个带有类别的wordpress网站,也有自定义帖子类型。
现在我想列出网站上特定类别的所有自定义帖子类型帖子。
使用普通帖子,它正在运行,所有类别档案的帖子都列在网站上url / custom-post-type-slug / category-slug
但是现在我想要也列出自定义帖子类型的帖子。
如何将它们包含在类别档案中?
亲切的问候 卢卡斯
答案 0 :(得分:1)
注册自定义帖子类型时。您可以添加参数has_archive以将其包含到归档中。
示例:
register_post_type( 'custom',
array(
'labels' => array(
'name' => __( 'Cryptomonnaie' ),
'singular_name' => __( 'Cryptomonnaie' )
),
'public' => true,
'has_archive' => true,
'taxonomies' => array( 'category', 'post_tag' ),
)
);
如果已设置has_archive参数。您可以尝试在functions.php文件中添加一个过滤器,以此方式更改类别和标记的查询:
add_filter('pre_get_posts', 'query_post_type');
function query_post_type($query) {
if(is_category() || is_tag()) {
$post_type = get_query_var('post_type');
if($post_type)
$post_type = $post_type;
else
$post_type = array('post','photo', 'geek', 'sport', 'bio', 'news','tv', 'trends', 'societe'); // replace cpt to your custom post type
$query->set('post_type',$post_type);
return $query;
}
}
答案 1 :(得分:0)
如果您使用CPT用户界面创建自定义帖子类型,则会有一个选项“已存档”。将其设置为True。
否则
function create_post_type() {
register_post_type( 'acme_product',
array(
'labels' => array(
'name' => __( 'Products' ),
'singular_name' => __( 'Product' )
),
'public' => true,
'has_archive' => true,
)
);
}
add_action( 'init', 'create_post_type' );
答案 2 :(得分:0)
此代码成功:
add_filter('pre_get_posts', 'query_post_type');
function query_post_type( $query ) {
if( is_category() && $query->is_main_query() && empty( $query->query_vars['suppress_filters'] ) ) {
$query->set( 'post_type', array(
'replace_with_custom_post_type'));
return $query;
}
}