【问题标题】:Wordpress - Single taxonomy term to link to category of termWordpress - 链接到术语类别的单一分类术语
【发布时间】:2022-04-09 01:37:49
【问题描述】:

我目前在 single-resources.php 页面上显示我的帖子的自定义分类术语。但是我需要它链接到分类类别页面而不是页面的链接。

这是我目前拥有的:

<?php
    $term_list = wp_get_post_terms($post->ID, 'resourcecategory', array("fields" => "all"));
    foreach($term_list as $term_single) {
            echo '<a class="icon-hv-link" href="' . esc_url( $term_link ) . '"><i class="icon-left-open-big"></i><span>' . $term_single->name . '</span></a>';
    }
?>

我以前这样做确实有效,但是它显示了每个分类术语而不是帖子特定的术语,所以它不起作用:(

<?php $terms = get_terms( 'resourcecategory' );
        if ( ! empty( $terms ) && ! is_wp_error( $terms ) ){
             foreach ( $terms as $term ) {
               echo '<a class="icon-hv-link" href="' . esc_url( $term_link ) . '"><i class="icon-left-open-big"></i><span>' . $term->name . '</span></a>'; 
             }
         }?>

有人知道以某种方式将两者结合起来吗?

【问题讨论】:

    标签: php wordpress taxonomy taxonomy-terms


    【解决方案1】:

    对于其他对此有疑问的人,我设法通过以下代码实现了我所追求的目标:

      <?php
        $terms = get_the_terms( $post->ID, 'resourcecategory');
        foreach($terms as $term) {
            echo '<a class="icon-hv-link" href="' . get_term_link($term) . '"><i class="icon-left-open-big"></i><span>' . $term->name . '</span></a>';
        }
      ?>
    

    您需要使用get_the_terms 而不是get_terms。如 cmets 中所述,不要使用wp_get_post_terms,因为这会导致对数据库的不必要调用

    【讨论】:

    • 使用get_the_terms()wp_get_post_terms() 未缓存,因此您正在进行不必要的数据库调用。 get_the_terms() 已缓存,因此您可以调用它一百次,并且不会花费您任何数据库调用。 ;-)
    • BTW +1 用于将术语对象传递给get_term_link()。这可以避免不必要的数据库调用。如果只传term ID,则需要查询db获取term对象来建链
    • 感谢您的反馈。我已经更新了我的答案:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    相关资源
    最近更新 更多