我正在尝试创建一个插件,我需要一个自定义帖子和分类。但它可以在管理员方面访问,但分类标准不适用于前端。
这是我注册自定义帖子和分类的方式:
function post_type_questionnaire()
{
$labels = array(
'name' => _x('Questionnaire', 'post type general name'),
'singular_name' => _x('Questionnaire', 'post type singular name'),
'add_new' => _x('Add New Question', 'questionnaire'),
'add_new_item' => __('Add New Questionnaire')
);
$args = array(
'labels' => $labels,
'public' => true,
'publicly_queryable' => true,
'show_ui' => true,
'query_var' => true,
'rewrite' => true,
'_builtin' => false, // It's a custom post type, not built in!
'capability_type' => 'post',
'hierarchical' => false,
'menu_position' => null,
'supports' => array('title',
//'editor',
/*'excerpt',
'thumbnail',
'trackbacks',
'custom-fields',
'comments',
'revisions',
'author',
'page-attributes'*/
));
register_post_type('questionnaire',$args);
}
add_action('init', 'post_type_questionnaire');
function create_questionnaire_taxanomies(){
register_taxonomy('qcategories','questionnaire', array(
'hierarchical'=>true,
'label'=>'Questionnaire Categories',
'rewrite' => array( 'slug' => 'questionnaire' )
));
}
add_action('init', 'create_questionnaire_taxanomies',0);
我正在使用短代码在前端显示它。
使用下面的代码显示所有帖子
$args = array(
'post_type' => 'questionnaire',
'posts_per_page' => -1,
);
$query = new WP_Query($args);
if ( $query->have_posts() ) { ?>
<?php while ( $query->have_posts() ) :query->the_post(); ?>
但是,当我尝试指定分类术语时,它不起作用,这就是代码:
$args = array(
'post_type' => 'questionnaire',
'posts_per_page' => -1,
'tax_query' => array(
array(
'taxonomy' => 'qcategories',
'field' => 'slug',
'terms' => $atts["name"]
)
)
);
$query = new WP_Query($args);
if ( $query->have_posts() ) { ?>
<?php while ( $query->have_posts() ) : $query->the_post(); ?>
当我试图在模板页面中显示帖子的数量时,它什么都没显示:
$term = get_term( 3, 'qcategories' );
echo $term->count;
这没有输出,所以我认为分类法没有注册,任何人都可以帮我在我的自定义插件中注册分类法。提前谢谢!
被修改
这是$ args:
的输出array (size=3)
'post_type' => string 'questionnaire' (length=13)
'posts_per_page' => int -1
'tax_query' =>
array (size=1)
0 =>
array (size=3)
'taxonomy' => string 'qcategories' (length=11)
'field' => string 'slug' (length=4)
'terms' => string 'new' (length=3)
答案 0 :(得分:2)
看起来代码很好,因为OP发现代码中只有一点疏忽,即在注册分类法之前的插件中有WordPress模板标记if(is_admin())
,这导致代码在Admin中工作得很好小组,但是当它在前端调用时,WP_QUERY
没有可用的分类法
删除admin_only if条件,代码才能正常工作。