回显林内的ACF分类字段以用于另一分类

时间:2021-06-29 作者:tch

我正在“显示”自定义分类法中的项目列表中回显缩略图。在此分类法中,我通过高级自定义字段/ACF有其他字段:

\'podcast_category_thumb\' = image field
\'podcast_topic\' = Taxonomy field linked to another custom taxonomy.
使用下面的代码,我可以很好地输出图像。但我在哪里

echo get_field(\'podcast_topic\', $term);

"E;我只是收到;数组";。

我想这是因为它是一个具有多个值的分类领域(?)我希望的只是“podcast\\u topic”内容的回应。我已经疯狂地在谷歌上搜索过了,但如果没有foreach来列出每个项目,我似乎找不到实现这一点的方法,但由于我已经在foreach中,似乎没有任何方法可以做到这一点。

我是愚蠢和/或遗漏了一些明显的东西,还是有更好的方法来处理这个问题??

    <?php 
        if( get_terms(\'shows\') )
        {
            foreach( get_terms(\'shows\') as $term )
            {
                    echo \'<div class="item \';
                    echo get_field(\'podcast_topic\', $term);
                    echo \' col-4 col-md-3 col-lg-2"><a href="/shows/\';
                    echo $term->slug;
                    echo \'">\';
                    echo wp_get_attachment_image( get_field(\'podcast_category_thumb\', $term), \'thumbnail\', false);
                    echo \'</a></div>\';
            }
        }
     ?>

1 个回复
最合适的回答,由SO网友:Sohan Zaman 整理而成

首先,你可以foreach 在…内foreach. 事实上,您可以根据服务器配置将循环嵌套到更高的级别。

如果要在该字段中仅使用一个术语,请确保选择Field TypeRadioSelectReturn ValueTerm Object. 在这种情况下,您的代码应该如下所示:

<?php 
if( get_terms(\'shows\') ) {
    foreach( get_terms(\'shows\') as $term ) {
        $topic_term = get_field(\'podcast_topic\', $term); // This should be a Term Object

        // Optional: you can use $topic_term to get ACF data from that selected term
        $topic_custom_thumb = get_field(\'podcast_topic_thumb\', $topic_term);

        echo \'<div class="item \' . esc_attr( $topic_term->slug ) . \' col-4 col-md-3 col-lg-2">\';
        echo \'<a href="\' . get_term_link( $term ) . \'">\'; // You were making the term link in wrong way
        echo wp_get_attachment_image( get_field(\'podcast_category_thumb\', $term), \'thumbnail\', false);
        echo \'</a></div>\';
    }
}
?>
如果您希望选择多个术语作为播客主题字段,则Field Type 应该是Multi SelectCheckbox. 在这种情况下,使用get_field(). 那么您的代码应该是这样的:

<?php 
if( get_terms(\'shows\') ) {
    foreach( get_terms(\'shows\') as $term ) {
        $topic_terms = get_field(\'podcast_topic\', $term); // This should be an array of Term Objects
        $classes = []; // Let\'s store slugs of each term here
        if( is_array($topic_terms) && !empty($topic_terms) ) {
            foreach( $topic_terms as $topic_term ) {
                $classes[] = $topic_term->slug;
            }
        }
        echo \'<div class="item \' . esc_attr( implode( \' \', $classes ) ) . \' col-4 col-md-3 col-lg-2">\';
        echo \'<a href="\' . get_term_link( $term ) . \'">\'; // You were making the term link in wrong way
        echo wp_get_attachment_image( get_field(\'podcast_category_thumb\', $term), \'thumbnail\', false);
        echo \'</a></div>\';
    }
}
?>
记住,当你Term Object 从…起get_field(), 您还可以使用该对象从该术语中获取ACF数据。第一个代码块中的示例。

相关推荐