@Legal2019
Всё в имени моём... и радость и печаль...

Как сделать вывод термов и меток?

Подскажи пожалуйста в какую сторону капать.
Есть созданный тип записи, скажем "aaa".
Есть к типу записи "ааа" таксономия (как категории) - "services".
Есть к типу записи "ааа" таксономия (как метки) - "mylabel".
Есть в таксономии "services" термы - "терма № 1" и "терма № 2".
Есть в метках "mylabel" термы - "Метка № 1" и "Метка № 2".
В каждой терме есть запись, скажем:
http://localhost:8089/терма_№_1/Метка_№_1/запись_№_1

В хлебных крошках вид:
Главная / ааа / Терма № 1 / Метка № 1 / запись № 1

Ни как не пойму, как сделать так, чтобы находясь, к примеру, на "Терма № 1" ("Терма № 2" и т.д.) вывод был в виде:
В хлебных крошках:
Главная / ааа / Терма № 1
<ul>
   <li>"Метка № 1"</li>
      <ul>
         <li>запись № 1</li>
         <li>запись № 2</li>
      </ul>
   <li>"Метка № 2"</li>
      <ul>
         <li>запись № 1</li>
         <li>запись № 2</li>
      </ul>
</ul>

Пример смотреть.
  • Вопрос задан
  • 269 просмотров
Решения вопроса 1
@Legal2019 Автор вопроса
Всё в имени моём... и радость и печаль...
С некоторым количеством попыток получился такой вот код (возможно что-то не так в нём, жду обоснованной критики).
<div style="border: 1px dashed blue; min-height: 150px;">
<?php
$terms = get_terms( array(
	'taxonomy'      => array( 'services' ), // название таксономии с WP 4.5
	'orderby'       => 'parent', // Если указать 'include', то вывод будет на основе 'include'.
	'order'         => 'ASC',
	'hide_empty'    => true, 
	'object_ids'    => null,
	'include'       => array(), // array(181, 184, 185, 188, 186, 187), Если в таком виде (ID термов), то в таком порядке и будет вывод.
	'exclude'       => array(), 
	'exclude_tree'  => array(), 
	'number'        => '', 
	'fields'        => 'all', 
	'count'         => false,
	'slug'          => '', 
	'parent'         => '',
	'hierarchical'  => false, 
	'child_of'      => 138, //ID дочки
	'get'           => '', // all - выводит все термины
	'name__like'    => '',
	'pad_counts'    => false, 
	'offset'        => '', 
	'search'        => '', 
	'cache_domain'  => 'core',
	'name'          => '',    // str/arr поле name для получения термина по нему. C 4.2.
	'childless'     => false, // true не получит (пропустит) термины у которых есть дочерние термины. C 4.2.
	'update_term_meta_cache' => true, // подгружать метаданные в кэш
	'meta_query'    => '',
) );
foreach( $terms as $term ){    
    echo '<div style="position:relative;"><ul class="taxonomy_uslugi_wrapper">'
    . '<li><h2><a href="'. get_term_link( $term ).'">'.$term->name.'</a></h2></li>';
    echo '<ul class="uslugi_term">';
    $query = new WP_Query( array(
        'post_status' => 'publish',
        'posts_per_page' => -1,
        'tax_query' => array(
            array(
                'taxonomy' => 'services',
                'field'     => 'slug',
                'terms'     => $term->slug,
            )
        )
    ));
    while ( $query->have_posts() ) { # внутренний цикл
        $query->the_post();
        ?>
<li class="uslugi-li"><?php echo '<a href="'. get_permalink( $post->ID ) .'" title="'. $post->post_title .'">'. $post->post_title .'</a>';?><?php echo '<a href="'. esc_url('/kontakty') .'">';?>Сделать заказ</a><span style="position: relative;left: -110px;">ID <?php the_id ($post->ID) ?></span></li>
        <?php  
    } # конец внутреннего
    echo "</ul></ul></div>";
};?>
<?php wp_reset_postdata();?>
    </div>


В итоге, если мы находимся на странице http://localhost:8089/services/business/, то в шаблоне taxonomy-services-business.php выводится:
<div style="position:relative;">
      <ul class="taxonomy_uslugi_wrapper">
           <li><h2><a href="">Название термы 1</a></h2></li>
                 <ul class="uslugi_term">
                      <li class="uslugi-li"><a href="" title="">Запись № 3 (в Название термы 1) </a><a href="">Сделать заказ</a><span style="position: relative;left: -110px;">ID 1086</span></li>
               </ul>
        </ul>
      <ul class="taxonomy_uslugi_wrapper">
           <li><h2><a href="">Название термы 2</a></h2></li>
                 <ul class="uslugi_term">
                      <li class="uslugi-li"><a href="" title="">Запись № 1 (в Название термы 2) </a><a href="">Сделать заказ</a><span style="position: relative;left: -110px;">ID 1086</span></li>
               </ul>
        </ul>
</div>


Т.е. вывод при нахождении на странице http://localhost:8089/services/business/, в шаблоне taxonomy-services-business.php такой:
1. Поросята
1.1. Нуф-Нуф
1.2. Ниф-Ниф
1.3. Наф-Наф

2. Слова
2.1. Слова для добра
2.2. Слова для зла

Где 1. Поросята и 2. Слова - термы;
Где 1.1. Нуф-Нуф и 2.1. Слова для добра и т.п. - записи относящиеся к соответствующей термеhttp://localhost:8089/services/business/

Только вот , так и не получилось сделать вывод меток...
По факту получилось сделать вывод ссылок на термы и ссылок на записи привязанные к этим термам конкретной таксономии. Но в целом, именно этого я и добивался.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы