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

Таксономия, как лучше сделать вывод?

Есть ситуация, не знаю как реализовать...
Есть taxonomy-$mytaxname.php - выводит список ссылок на посты внутри таксономии.
Есть термы в $mytaxname - терма1 и терма2, в которых есть дочки - терма1.1 / терма1.2 и т.п., и, соответственно, терма2.1 / терма 2.2 и т.п.
В taxonomy-$mytaxname.php есть текст внутри которого, в нужных местах вставлены single_term_title(); + the_archive_description( '', '' );.
Этот текст не изменен на всех дочках и родителях меняется лишь single_term_title(); + the_archive_description( '', '' );.
Ситуация:
Если попадаем в дочку термы1 или термы2 меняется только вывод ссылок
Пример:
Вывод родителя: терма1 или терма2 - вывод:
<h1>single_term_title</h1>
<ul>
    <li><a href="">title-post-my_tax_term_name</a></li>
</ul>

Вывод дочка: терма1.1 или терма2.1 - вывод:
<ul>
    <li><a href="">title-post-my_tax_term_name</a></li>
</ul>


Как вариант можно сделать taxonomy-$mytaxname-$MyTaxTermName.php - но нет желания клепать постоянно кучу файлов.
Вопрос:
Что сделать, чтобы было проще?
  • Вопрос задан
  • 48 просмотров
Решения вопроса 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>

P.S."Верно говорят - да осилит идущий."
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
azerphoenix
@azerphoenix
Java Software Engineer
Здравствуйте!
Используйте конструкцию if else
в if проверяйте есть ли дочерние термины у термина ,если есть, то выводите одно, а если нет, то другое....
https://wordpress.stackexchange.com/questions/9375...
https://wordpress.stackexchange.com/questions/1687...
Ответ написан
Ваш ответ на вопрос

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

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