单击自定义分类法时如何使用第一个 post 数据在同一页面上重定向?

How to redirect on same page with first post data when click on a custom taxonomy?

我有一个与 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>

现在,下拉列表中的所有分类都与页面上打开的 post link 相同。我希望每个分类法都应具有其各自第一个 post 的 link,当我单击一个分类法时,它会在同一 single.php 页面上打开该分类法的第一个 post。有什么办法吗? 这是我页面的图片:

这就是我的分类法下拉菜单的样子如果你放大并查看左下角你会看到所有主题名称上显示的当前 post link 我有什么办法可以将此 link 更改为该主题的第一个 post link。现在生物学分类 post 是打开的,当我先点击化学 post 的化学打开在这个页面上。请帮助我完成这项任务,我将非常感谢你。

有了term-object之后,你可以查找第一个post并得到它的permalink。在我的示例中,我按日期排序。然后设置post的link:

<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

代码未经测试。当然,您应该做一些检查,例如当没有 post 可用于该术语时该怎么做。