我创建了一个CPT UI
的帖子类型:
add_action( 'init', 'cptui_register_my_cpts_matratze' );
function cptui_register_my_cpts_matratze() {
$labels = array(
"name" => __( 'Matratzen', '' ),
"singular_name" => __( 'Matratze', '' ),
);
$args = array(
"label" => __( 'Matratzen', '' ),
"labels" => $labels,
"description" => "",
"public" => true,
"publicly_queryable" => true,
"show_ui" => true,
"show_in_rest" => false,
"rest_base" => "",
"has_archive" => true,
"show_in_menu" => true,
"exclude_from_search" => false,
"capability_type" => "post",
"map_meta_cap" => true,
"hierarchical" => false,
"rewrite" => array( "slug" => "matratze", "with_front" => true ),
"query_var" => true,
"supports" => array( "title", "editor", "thumbnail", "excerpt", "trackbacks", "custom-fields", "comments", "revisions", "author", "page-attributes", "post-formats" ),
"taxonomies" => array( "category", "post_tag" ),
);
register_post_type( "matratze", $args );
// End of cptui_register_my_cpts_matratze()
}
但是,当我想通过我的前端的链接访问类别时,我没有发帖。
例如,当你点击我什么都没有回来时:
帖子已开启,其类别为DaMi
:
我的CPT UI Post Type
配置错误了吗?有什么建议我做错了吗?
答案 0 :(得分:3)
查看here
默认情况下,WordPress网站上的类别页面只显示默认的“帖子”帖子类型,因此您需要在Wordpress通过添加pre_get_posts过滤器查询帖子之前添加CPT。
在这里添加了代码:
add_filter('pre_get_posts', 'query_post_type');
function query_post_type($query) {
if( is_category() ) {
$post_type = get_query_var('post_type');
if($post_type)
$post_type = $post_type;
else
$post_type = array('nav_menu_item', 'post', 'matratze'); // don't forget nav_menu_item to allow menus to work!
$query->set('post_type',$post_type);
return $query;
}
}
答案 1 :(得分:2)
当您将Wordpress标准类别用于自定义帖子类型时,默认情况下,Wordpress不会在类别存档页面上显示您的自定义帖子类型帖子。因此,您必须修改类别存档页面查询以包含您的自定义帖子类型。
请在function.php文件中包含以下代码。不要忘记在以下代码中更改自定义帖子类型名称。
function add_custom_post_types_to_tax( $query ) {
if( is_category() || is_tag() &&
empty( $query->query_vars['suppress_filters'] ) ) {
// Include your custom post type
$post_types = array( 'post', 'your_custom_type' );
$query->set( 'post_type', $post_types );
return $query;
}
}
add_filter( 'pre_get_posts', 'add_custom_post_types_to_tax' );
希望这会对你有所帮助。
答案 2 :(得分:1)
为此,
function query_post_type($query) {
if( is_category() ) {
$post_type = get_query_var('post_type');
// post type get here
if($post_type){
// no more code here for by default
}
else{
$post_types = array( 'post', 'your_custom_type' );
// custom type
}
$query->set('post_type',$post_type);
return $query;
}
}
add_filter('pre_get_posts', 'query_post_type');
我认为使用这个功能它会起作用。任何其他问题的评论。