显示包含所有类别列表的 ACF 类别分类法字段

Display a ACF Category Taxonomy Field With a List of all Categories

我使用 ACF 在类别分类法中添加了一个文本字段,这样我就可以添加一个很棒的字体图标代码,以显示在所有类别的列表中。

我正在寻找的最终结果是所有类别名称的列表 linked 到它们各自的类别页面(如果它们有帖子或没有),每个类别名称前都有自定义字段中的图标。

查看 ACF 文档并四处寻找解决方案我一次只能显示一个图标或者只是创建错误。

有没有更直接的方法我可以遍历所有类别并包括我的 ACF 自定义字段中的名称、link 和图标,就像我对具有自定义的帖子那样字段添加到它?

这是我到目前为止的代码,但它一次只显示一个,即使我正在尝试使用 foreach 循环遍历它们:

<?php
        $categories = get_the_category();
        $separator = ' ';
        $output = '';

    foreach( $categories as $category ) {
            $terms = get_the_terms( get_the_ID(), 'category');
            if($terms) {
              $term = array_pop($terms);
             $icon = get_field('cat_icon', $term );
            }
            echo $icon;

        $output .= '<a href="' . esc_url( get_category_link( $category->term_id ) ) . '" alt="' . esc_attr( sprintf( __( 'View all posts in %s', 'textdomain' ), $category->name ) ) . '">' . esc_html( $category->name ) . '</a>' . $separator;
    }
    echo trim( $output, $separator ); ?>

感谢任何帮助,谢谢!

这里是一张截图,您可以看到它显示了我的自定义字段中的图标,但我目前添加的 3 个类别中只有一个类别。

您可以使用 get_terms。试试下面的代码。

<?php

    $categories = get_terms( array(
        'taxonomy' => 'category',
        'hide_empty' => false
    ) );

    $separator = ' ';
    $output = '';

    foreach( $categories as $category ) {
        if($category) {
            $icon = get_field('cat_icon', $category );
        }
        echo $icon;
        $output .= '<a href="' . esc_url( get_category_link( $category->term_id ) ) . '" alt="' . esc_attr( sprintf( __( 'View all posts in %s', 'textdomain' ), $category->name ) ) . '">' . esc_html( $category->name ) . '</a>' . $separator;
    }
    echo trim( $output, $separator ); 

?>