Перечислите все записи в пользовательском типе записи, но динамически сгруппируйте их по пользовательским таксономиям


У меня есть пользовательский тип записи с именем "Ресурсы", который имеет таксономию с именем "Типы". Я вручную вытаскиваю каждый термин, что не является самым элегантным решением, и каждый раз, когда добавляется новый термин, я должен добавлять его вручную.

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

Есть ли простой способ сделать это? Спасибо.

Author: nurain, 2011-11-22

2 answers

Попробуйте этот фрагмент кода для шаблона страницы. Я использовал его в одном из своих проектов. Он выводит термин таксономии один за другим со списком всех сообщений с этим термином. (Просто замените YOUR_TAXONOMY_SLUG на ваш)

<div id="content">
<h2 class="entry-title"><?php the_title(); ?></h2>
    <div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
    $mytaxonomy = get_terms('YOUR_TAXONOMY_SLUG', array("fields" => "names"));
    <?php for ( $myterm = 0; $myterm < count($mytaxonomy); $myterm++) { ?>
        <h3><?php echo $mytaxonomy[$myterm]; ?>:</h3>
        <ul class="taxonomy_group">
        <?php $loop = new WP_Query(array('YOUR_TAXONOMY_SLUG' => $mytaxonomy[$myterm]));
            while ( $loop->have_posts() ) : $loop->the_post(); ?>
                <li><a href="<?php the_permalink(); ?>"><?php the_title();?></a></li>
            <?php endwhile; ?>  
        </ul>
    <?php } ?>
    </div><!-- #post-## -->
</div><!-- #content -->
 3
Author: YoYurec, 2011-12-08 22:29:40

Обратите внимание, что этот цикл будет работать только в том случае, если категория состоит из одного слова. Для WP_Query требуется категория SLUG в цикле. Если название категории состоит из двух или более слов, разделенных неразрывным пробелом, оно не будет работать (я могу это проверить, потому что только что попробовал). Я все еще не нашел способа извлечь слизняка из данного термина таксономии, но я работаю над этим.

ДОБАВЛЕНИЕ: Думаю, я нашел способ обойти проблему с названием термина из нескольких слов. Кажется, это работает в моем код.

    <div id="content">
<h2 class="entry-title"><?php the_title(); ?></h2>
    <div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
<?php $terms = get_terms('YOUR_TAXONOMY_SLUG');
    $count = count($terms); ?>
<?php if ($count > 0) {
    foreach ( $terms as $term) { ?>
        <h3><?php echo $term->name; ?></h3>    
        <ul class="taxonomy_group">
        <?php $loop = new WP_Query(array('YOUR_TAXONOMY_SLUG' => $term->slug));
            while ( $loop->have_posts() ) : $loop->the_post(); ?>
                <li><a href="<?php the_permalink(); ?>"><?php the_title();?></a></li>
            <?php endwhile; ?>  
        </ul>
    <?php }
    } ?>
    </div><!-- #post-## -->
</div><!-- #content -->

Дайте мне знать, если это сработает для кого-то еще или они увидят в этом какие-либо дыры.

 1
Author: Robert Kopacz, 2012-01-22 23:14:04