WordPress: Отдельные посты по типу поста в архиве таксономии - PullRequest
0 голосов
/ 08 января 2019

Я хотел бы создать пользовательскую страницу архива ( taxonomy.php ) для моих пользовательских таксономий, где сообщения отображаются в списках, сгруппированных по типу сообщения.

У меня есть три типа сообщений: -

  • Сообщение
  • Отчет (Пользовательский тип сообщения)
  • Руководство (Пользовательский тип сообщения)

У меня также есть две пользовательских таксономии: -

  • Территория продаж (Термины - это список бизнес-секторов)
  • Техническая область (Термины - список технических «тем»)

Как мне лучше всего подойти к этому?

Я достиг чего-то похожего в пользовательском шаблоне страницы, где я сгруппировал определенную категорию своих направляющих Пользовательский тип поста по моей Технической области Пользовательские термины таксономии (код ниже), но я не могу перевести это, чтобы работать так, как я описал выше.

<?php
    foreach ( $technical_area_terms as $technical_area_term ) {
        $member_group_query = new WP_Query( array(
            'post_type' => 'guides',
            'tax_query' => array(
                'relation' => 'AND',
                array(
                    'taxonomy' => 'technical_area',
                    'field' => 'slug',
                    'terms' => array( $technical_area_term->slug ),
                ),
                array(
                    'taxonomy' => 'category',
                    'field' => 'slug',
                    'terms' => array( 'p1000-guides', 'guides'),
                )
            )
        ) );
    ?>

    <h2><a href="../../../technical_area/<?php echo $technical_area_term->slug; ?>"><?php echo $technical_area_term->name; ?></a></h2> <!--  Technical Area Title -->
        <?php
        if ( $member_group_query->have_posts() ) : ?>

                <table>
                    <tr>
                        <th>Title</th>
                        <th>Issue</th>
                        <th>Date</th>
                    </tr>   <?php
            while ( $member_group_query->have_posts() ) : $member_group_query->the_post(); ?>
                <tr>
                    <td><?php the_title( '<a href="' . esc_url( get_permalink() ) . '" rel="bookmark">' , '</a>' ); ?></td>
                    <td></td>
                    <td><?php the_time( get_option( 'date_format' ) ); ?></td>
                </tr>

        <?php endwhile; ?> 
            </table>
        <?php   else: ?>
                No content
        <?php endif; ?>

1 Ответ

0 голосов
/ 10 января 2019

Сначала давайте получим сообщения

    // vars
    $posts = $wp_query->posts;
    $posts_sorted = array();

Затем мы можем просмотреть их и отсортировать в новый многомерный массив с различными типами post_types в массиве. Это будет выглядеть так:

    // loop and reorder
    foreach($posts as $key => $obj) {

        if (!array_key_exists($obj->ID, $posts_sorted))
        $posts_sorted[$obj->post_type][] = $obj;

    }

Теперь нам просто нужно перебрать наш новый массив и вывести то, что мы хотим вывести. Вот мой пример зацикливания

 <?php

    foreach($posts_sorted as $post_type => $post_arr) : ?>

        <div class="wrapper">
            <h3><?= $post_type ?></h3>

            <div class="card-group">

                <?php

                    foreach($post_arr as $post ) {
                           var_dump($post);
                    }

                ?>

            </div>

        </div>

    <?php endforeach; ?>

В этом примере я просто var_dumping объекта post, но вы можете работать с ним так, как вам нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...