admin管理员组

文章数量:1316537

I have created a function to display my custom taxonomy ('market') terms. But the problem is that this outputs the first taxonomy term twice. Here is my function:

    function related_markets()
    {
        if ('news' === get_post_type()) {
            $terms = get_terms(array(
                'taxonomy' => 'market',
                'hide_empty' => false,
            ));
            foreach ($terms as $term) {
                $term_list .= '<a class="related-market btn btn-outline-secondary" href="' . esc_url(get_term_link($term)) . '">' . $term->name . '</a>';
                echo $term_list;
            }
        } elseif ('analysis' === get_post_type()) {
            $terms = get_terms(array(
                'taxonomy' => 'market',
                'hide_empty' => false,
            ));
            foreach ($terms as $term) {
                $term_list .= '<a class="related-market btn btn-outline-secondary" href="' . esc_url(get_term_link($term)) . '">' . $term->name . '</a>';
                echo $term_list;
            }
        }
    }
endif;

I have created a function to display my custom taxonomy ('market') terms. But the problem is that this outputs the first taxonomy term twice. Here is my function:

    function related_markets()
    {
        if ('news' === get_post_type()) {
            $terms = get_terms(array(
                'taxonomy' => 'market',
                'hide_empty' => false,
            ));
            foreach ($terms as $term) {
                $term_list .= '<a class="related-market btn btn-outline-secondary" href="' . esc_url(get_term_link($term)) . '">' . $term->name . '</a>';
                echo $term_list;
            }
        } elseif ('analysis' === get_post_type()) {
            $terms = get_terms(array(
                'taxonomy' => 'market',
                'hide_empty' => false,
            ));
            foreach ($terms as $term) {
                $term_list .= '<a class="related-market btn btn-outline-secondary" href="' . esc_url(get_term_link($term)) . '">' . $term->name . '</a>';
                echo $term_list;
            }
        }
    }
endif;
Share Improve this question edited Nov 10, 2020 at 12:17 Farzad asked Nov 10, 2020 at 12:12 FarzadFarzad 33 bronze badges
Add a comment  | 

1 Answer 1

Reset to default 3

I think you want to show list of the category links right? but you are echo list inside the for-each loop. you have to write that outside of the loop.

foreach ($terms as $term) {
            $term_list .= '<a class="related-market btn btn-outline-secondary" href="' . esc_url(get_term_link($term)) . '">' . $term->name . '</a>';
        }
        echo $term_list;

Also don't forgot to initialize "$term_list" first in the function. :)

本文标签: getterms() duplicate first term of a custom taxonomy