木材 - 列出类别及其帖子

时间:2018-04-26 19:21:43

标签: wordpress categories timber

我有自定义分类法('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 %}

但是它只输出类别,因为我缺少输出帖子的位,但我尝试的所有内容都不起作用。

有什么想法吗? 感谢

2 个答案:

答案 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
    ?>

来源:List all categories with posts