我有一个名为 products 的自定义帖子类型,其中 product_categories 作为其分类名称。它包含每个都有子类别和帖子的类别。
我想仅显示子类别中所有帖子的计数。
这是我到目前为止所做的:
<?php
// POSTS LOOP
// Query
$args = array( 'post_type' => 'products' , 'orderby' => 'menu_order', 'order' => 'ASC' ,
'tax_query' => array(
array(
'taxonomy' => 'product_categories',
'terms' => array(14),
'include_children' => false
)
));
$query = new WP_Query( $args );
// Post Counter
$term_id = 14;
$tax_name = 'product_categories';
$terms = get_terms($tax_name, array('parent' => 0));
$term_children = get_term_children($term_id,$tax_name);
$post_count = 0;
// Loop Structure
echo '<ul>';
while ( $query->have_posts() ) : $query->the_post();
echo '<li class="zazzoo-page">';
foreach($terms as $term) {
$term_children = get_term_children($term->term_id,$tax_name);
echo '<ul>';
foreach($term_children as $term_child_id) {
$term_child = get_term_by('id',$term_child_id,$tax_name);
$post_count = $term_child->count;
echo '<div class="zazzoo-counter">'. $post_count .' Designs</div>';
}
echo '</ul>';
} ?>
<div class="title-border"><div class="page-title"><?php the_title(); ?></div></div>
<div class="hovereffect">
<?php the_post_thumbnail('zazzoo-thumb', array('class' => 'responsive-img')); ?>
<div class="overlay">
<h2><?php the_title(); ?></h2>
<?php the_content(); ?>
</div>
</div>
<?php echo '</li>';
endwhile;
echo '</ul>';
wp_reset_query();
?>
上图是目前的样子。 手册和卡片标签(每个帖子中有4个帖子)是应该显示帖子计数值的子类别,其余的是帖子。
我还在学习WordPress主题开发,所以如果有人能提供一些指导,我们将不胜感激。
答案 0 :(得分:1)
如果您希望将帖子和术语与帖子混合在一起并将它们展示在一起 - 这是一项非常艰巨的任务。
我建议你只在列表中使用其中一个 - 更容易。
为此,您可以执行以下操作:
这可能是您的查询(您要查看ID为14的术语的子类别):
$tax_name = 'product_categories';
$parent_id = 14;
$terms = get_terms( $tax_name, array( 'parent' => $parent_id, 'pad_counts' => 1, ) );
然后你可以去打印它:
$html = '';
$html .= '<ul>';
foreach ( $terms as $single_term ) {
$html .= '<li class="zazzoo-page">';
// only put the tag on terms, that have more than 1 items in it
if ( $single_term->count > 1 ) {
$html .= '<div class="zazzoo-counter">'. $single_term->count .' Designs</div>';
}
$html .= '<div class="title-border">';
$html .= '<div class="page-title">';
$html .= $single_term->name;
$html .= '</div>';
$html .= '</div>';
$html .= '<div class="hover effect">';
$html .= '<div class="overlay">';
$html .= $single_term->name;
$html .= '</div>';
$html .= '</div>';
$html .= '</li>';
}
$html .= '</ul>';
echo $html;
通过这种方式,您将获得包含姓名和计数的列表(如果需要),但您将丢失图像和内容(在悬停时)。
如果您想要恢复图像和内容,可以查询此内容的每个子类别的第一篇文章,如下所示:
$posts_array = get_posts(
array(
'posts_per_page' => 1,
'post_type' => 'products',
'tax_query' => array(
array(
'taxonomy' => 'product_categories',
'field' => 'term_id',
'terms' => $single_term->term_id,
)
)
)
);
或者您可以将图像和/或描述分配给您显示的自定义分类子类别。
我希望这能帮到你一点点。 :)