Лесоматериалы - список категорий и их посты - PullRequest
0 голосов
/ 26 апреля 2018

У меня есть CPT («транспортные средства») с пользовательской таксономией («Vehicles_category»)

У меня есть 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 голосов
/ 30 апреля 2018

Хорошо, действительно задумался над этим, поэтому отступил немного.

$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, связанные с этой категорией.

0 голосов
/ 26 апреля 2018

Здесь уже спрашивали Получить все категории и сообщения в этих категориях

В любом случае, вот еще один код, который поможет вам достичь того же результата:

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

Источник: Список всех категорий с записями

...