Поддержка Проблемы и решения Вывод термы списком по «меткам»

  • Подскажи пожалуйста в какую сторону капать.
    Есть созданный тип записи, скажем «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>
Просмотр 1 ответа (всего 1)
  • Перепробовав несколько вариантов получилось:

    
    <?php
    $terms = get_terms( array(
    	'taxonomy'      => array( 'mylabel' ), // название таксономии с WP 4.5
    	'orderby'       => 'id', 
    	'order'         => 'ASC',
    	'hide_empty'    => true, 
    	'object_ids'    => null,
    	'include'       => array(),
    	'exclude'       => array(), 
    	'exclude_tree'  => array(), 
    	'number'        => '', 
    	'fields'        => 'all', 
    	'count'         => false,
    	'slug'          => '', 
    	'parent'         => '',
    	'hierarchical'  => true, 
    	'child_of'      => 0, 
    	'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="width: 90%; margin: 10px auto;border: 1px dotted red;">'
        . '<h3><a href="">'.$term->name.'</a></h3>';
        echo '<ol style="width: 90%; margin: 5px 30px;border: 1px dotted;">';
        $query = new WP_Query( array(
            'post_status' => 'publish',
            'posts_per_page' => -1,
            'tax_query' => array(
                array(
                    'taxonomy' => 'mylabel',
                    'field'    => 'slug',
                    'terms'    => $term->slug,
                )
            )
        ));
        while ( $query->have_posts() ) { # внутренний цикл
            $query->the_post();
            ?>
            <li><?php echo '<a href="'. get_permalink( $post->ID ) .'">'. $post->post_title .'</a>';?> <span style="color: green; font-weight: bolder; padding-left: 20px;"><?php the_id ($post->ID) ?></li>
            <?php  
        } # конец внутреннего
        echo "</ol></div>";
    };?>
    </div> 

    Правда всё равно не получается вывести в том виде как надо, т.к. данный код выводит все записи и все термы (как метки) со всех термов (как категории), т.е. вне зависимости от того, на какой терме (категории) находишься в данный момент.
    Скажем так:
    Есть две термы (как категории) — 1-я «Терма (кат1)» и 2-я «Терма (кат2)». В «Терма (кат1)» есть «Метка № 1», а в «Терма (кат2)» есть «Метка № 2». Тем самым, должно быть так, чтобы при нахождении на странице «Терма (кат1)» показывалась соответствующая метка и ссылки на посты, относящиеся к ней.
    К сожалению, с кодом выше, получается сделать вывод не такой как надо.
    Что делать? Что не так?

    • Ответ изменён 1 год, 11 месяцев назад пользователем legal2019.
Просмотр 1 ответа (всего 1)
  • Тема «Вывод термы списком по «меткам»» закрыта для новых ответов.