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

Как сделать вывод постов после последнего вывода термы?

Всем привет,
Есть файл taxonomy-msk.php в котором должны выводиться термы в следующем порядке:
1. При попадании на терму msk-mos (ID - 181), страницы таксономии msk, выводятся дочки термы msk-mos - msk-1, msk-2 и т.д.
2. При переходе на на дочку термы msk-1, выводятся дочки термы msk-1 (внучки термы msk-mos) - msk-1_1, msk-1_2 и т.д.
3. При переходе на на дочку термы msk-1_1 должны выводиться наименования записей относящихся к терме msk-1_1

Вот такой вот код у меня получился:
<div class="border">
<div class="mymenu">
    <nav class="main-navigation">
<?php
$termsID = get_terms($taxonomy, array('child_of' => $term->term_id ) );
echo '<div class="menu-msk-container"><ul id="menu-msk" class="">';    
$terms_msk = $termsID;
if ( !empty( $terms_msk ) && !is_wp_error( $terms_msk ) ) {
	foreach ($terms_msk as $term) {
                echo '<li><a href="' . get_term_link( $term ) . '" title="' . sprintf($term->name) . '">' . $term->name . '</a></li>';
		}
	}
    echo '</ul></div>';
;?>
    </nav>
</div>
</div>

Однако, с этим кодом вывод получается в следующем виде:
1. При попадании на терму msk-mos (ID - 181), страницы таксономии msk, выводятся дочки термы msk-mos - msk-1, msk-2 и т.д., а также, выводятся дочки термы msk-1 (внучки термы msk-mos) - msk-1_1, msk-1_2 и т.д.
2. При переходе на на дочку термы msk-1_1 НЕ выводятся наименования записей относящихся к терме msk-1_1

Не знаю, что нужно дописать, чтобы выводились записи согласно:
1. При попадании на терму msk-mos (ID - 181), страницы таксономии msk, выводятся дочки термы msk-mos - msk-1, msk-2 и т.д.

3. При переходе на на дочку термы msk-1_1 должны выводиться наименования записей относящихся к терме msk-1_1


Методом проб и ошибок получился такой код:
<div id="" class="">

<?php
echo '<p>Это наименование таксаномии: <span style="font-weight: bold;">'.$taxonomy.'</span></p>';
echo '<p>Это <span style="text-decoration: underline;">название термы</span> в таксаномии '.$taxonomy.': <span style="font-weight: bold;">'.$term_slug.'</span></p>';
echo '<p>Это <span style="text-decoration: underline;">ID термы</span> в таксаномии '.$taxonomy.': <span style="font-weight: bold;">'.$term->term_id.'</span></p>';
?>
<ul class="">
        <?php
                echo'<div style="padding: 10 0 10 50;outline:1px dotted grey;">'
        . '        <p>ссылки на дочки <strong>'.$term_slug.'</strong>:</p>';
if ( !empty( $terms ) && !is_wp_error( $terms ) ) {
	foreach ($terms as $term) {
                echo '<li><a href="' . get_term_link( $term ) . '" title="' . sprintf(__('View all post filed under %s', 'my_localization_domain'), $term->name) . '">' . $term->name . '</a></li>';
		}
	}
        
        echo'</div><div style="padding: 10 0 10 50;outline:1px dotted grey;">'
        . '        <p>ссылки на посты в дочках <strong>'.$term_slug.'</strong>:</p>';
foreach ($posts as $post){
  setup_postdata($post); ?>

<li class=""><?php echo '<a href="'. get_permalink( $post->ID ) .'">'. $post->post_title .'</a>';?></li>
  <?php
}echo'</div>';
wp_reset_postdata();
?>
</ul>
</div>
    <pre style="color: green; width: 100%;">
        <?php print_r($terms) ;?>
    </pre>
</div>

Ни как не могу понять, как сделать так, чтобы ссылки на записи выводились только тогда, когда находишься в конкретной терме.
С этим кодом получается лишь выводить дочки главной термы и ссылки на записи из всех дочерних термов.
  • Вопрос задан
  • 39 просмотров
Решения вопроса 1
@Legal2019 Автор вопроса
Всё в имени моём... и радость и печаль...
А вот и долгожданное, собственное решение:
<nav class="main-navigation">
    <?php
        $term_slug = get_query_var('term');
        $taxonomy = get_query_var('taxonomy');
        $term = get_term_by( 'slug', $term_slug, $taxonomy );
        $terms = get_terms($taxonomy, array(
            'hide_empty'        => 0,//true=1, false=0,
            'hierarchical'      => 1,//true=1, false=0,
            //'childless'     => true,
            //'child_of'          => $term->term_id,
            'parent'            => $term->term_id,
            ) );
        $mytax_query = array(
                array(
                    'taxonomy' => $taxonomy,
                    'field' => 'slug',
                    'terms' => $term_slug,
                    'include_children' => true
                )
            );

        $posts = get_posts( array(
            'post_type'   => 'notary',
            'numberposts'   => -1,
            //'order'         => 'asc',
            'tax_query'     => $mytax_query
        ) );
    
        if ( !empty( $terms ) && !is_wp_error( $terms ) ) {
                echo '<div><ul>';
                //. '        <p>ссылки на дочки <strong>'.$term_slug.'</strong>:</p>';
                foreach ($terms as $term) {
                        echo '<li><a href="' . get_term_link( $term ) . '" title="' . sprintf(__('View all post filed under %s', 'my_localization_domain'), $term->name) . '">' . $term->name . '</a></li>';
                        }
                echo '</ul></div>';
                } elseif (term_exists($term->term_id)) {
                        echo '<div><ul>';
                        //. '        <p>ссылки на посты в дочках <strong>'.$term_slug.'</strong>:</p>';
                        foreach ($posts as $post){
                                setup_postdata($post); ?>
                              <li class=""><?php echo '<a href="'. get_permalink( $post->ID ) .'">'. $post->post_title .'</a>';?></li>
                                <?php
                        }
                        echo '</ul></div>';
                }
        wp_reset_postdata();
        ?>
    </nav>
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы