我有自定义分类法('vehicles_category')的CPT('车辆')
我有4个类别(建筑,道路,废物,其他),每个类别分配了大量的帖子。
我正在尝试列出每个类别,并在下面分配给他们的帖子。
Construction
Post 1
Post 2
etc
Road
Post 6
Post 9
etc
与此作斗争。
我有这个帖子......
$context['vehicles'] = Timber::get_posts([
'order' => 'ASC',
'post_type' => 'vehicles',
'posts_per_page' => -1,
'paged' => $paged,
]);
这是为了得到类别......
$context['categories'] = Timber::get_terms('vehicle_category');
$context['posts'] = $context['vehicles'];
到目前为止,我在我的枝条文件中有这个...
{% for category in categories %}
{% if category.count >= 1 %}
<li>
<a href="{{site.url}}/vehicles/{{ category.slug }}">{{ category.title }}</a>
</li>
{% endif %}
{% endfor %}
但是它只输出类别,因为我缺少输出帖子的位,但我尝试的所有内容都不起作用。
有什么想法吗? 感谢
答案 0 :(得分:1)
好的,真的推翻了这一点,所以后退了一点。
$context['categories'] = Timber::get_terms('vehicle_category');
vehicle_category是我的自定义分类。
{% for category in categories %}
<h1>{{category.name}}</h1>
<div class="c-vehicle--list">
{% for post in category.posts %}
<div class="c-vehicle--list__item">
<a href="{{ site.url }}/vehicles/{{ post.slug }}" title="{{ post.title }}">
<img src="{{TimberImage(post.vehicle_image).src('postMedium')}}" alt="{{ post.title }}">
<span>{{ post.title }}</span>
<span>{{ post.terms('vehicle_category') | join(', ') }}</span>
</a>
</div>
{% endfor %}
</div>
{% endfor %}
因此,只需在我的自定义分类中循环输出类别,然后列出与该类别相关联的帖子post in category.post
。
答案 1 :(得分:0)
这里已经问过Get all categories and posts in those categories
无论如何,这是另一个可以帮助您实现相同结果的代码:
<?php
//for each category, show all posts
$cat_args=array(
'orderby' => 'name',
'order' => 'ASC'
);
$categories=get_categories($cat_args);
foreach($categories as $category) {
$args=array(
'showposts' => -1,
'category__in' => array($category->term_id),
'caller_get_posts'=>1
);
$posts=get_posts($args);
if ($posts) {
echo '<p>Category: <a href="' . get_category_link( $category->term_id ) . '" title="' . sprintf( __( "View all posts in %s" ), $category->name ) . '" ' . '>' . $category->name.'</a> </p> ';
foreach($posts as $post) {
setup_postdata($post); ?>
<p><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></p>
<?php
} // foreach($posts
} // if ($posts
} // foreach($categories
?>