Как перенаправить на ту же страницу с данными первого поста при нажатии на пользовательскую таксономию? - PullRequest
0 голосов
/ 23 января 2019

У меня есть вопрос, связанный с WordPress.Я сделал выпадающий список пользовательских таксономий на странице single.php. Это код, который я использую для перечисления своих таксономий:

       <ul class="dropdown-menu" aria-labelledby="dLabel">
          <?php $terms = get_terms( array(
                'taxonomy' => 'subject',
                'hide_empty' => false,
                            ) );
            if( !empty( $terms ) ):
            foreach ($terms as $key => $value) :
                $term = $value->name;
         ?>
         <li><a href=""><?php echo $term; ?></a></li>
         <?php endforeach; endif; wp_reset_query();  ?>
      </ul>

В настоящее время все таксономии в раскрывающемся списке имеют одну и ту же ссылку для публикации, которая открыта на странице.,Я хочу, чтобы в каждой таксономии была ссылка на соответствующий первый пост, и когда я нажимал на таксономию, она открывала первый пост этой таксономии на той же странице single.php.Есть ли способ сделать это?Вот изображение моей страницы: enter image description here

Вот так будет выглядеть мой выпадающий список таксономии, если вы увеличите масштаб и посмотрите в нижнем левом углу, вы увидите ссылку на текущую запись, которая показываетесть ли способ поменять эту ссылку на ссылку на первое сообщение этой темы.Прямо сейчас пост биологии таксономии открыт, когда я нажимаю на первый пост химии, открытый на этой странице.Пожалуйста, помогите мне в выполнении этой задачи, я буду вам очень благодарен.

1 Ответ

0 голосов
/ 23 января 2019

Получив термин-объект, вы можете посмотреть первый пост и получить его постоянную ссылку.в моем примере я заказал по дате desc.Затем установите ссылку на пост:

<ul class="dropdown-menu" aria-labelledby="dLabel">
    <?php
    $terms = get_terms(array(
        'taxonomy' => 'subject',
        'hide_empty' => false,
    ));
    if (!empty($terms)):
        foreach ($terms as $key => $value) :
            $term = $value->name;

//get the first post of this term **
            $args = array(
                'post_type' => 'post',
                'orderby' => 'date',
                'order' => 'DESC',
                'numberposts' => 1,
                'post_status'      => 'publish',
                'tax_query' => array(
                    array(
                        'taxonomy' => 'subject',
                        'field' => 'id',
                        'terms' => $value->term_id,
                    )
                )
            );
            $posts=get_posts($args);
            $first_page_link = get_permalink($posts[0]->ID);
//**
            ?>
            <li><a href="<?= $first_page_link; ?>"><?= $term ?></a></li>
        <?php endforeach;
    endif;
    wp_reset_query(); ?>
</ul>
<?php

Код не проверен.И, конечно же, вы должны сделать несколько проверок, например, что делать, когда нет доступных сообщений с этим термином.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...