在回声块循环中使用 ACF 图像对象进行自定义分类

Using an ACF image object for a custom taxonomy within an echo block loop

在这个由回声块组成的循环中使用时,我似乎无法为自定义分类提取 ACF 图像对象:

<?php if ( have_posts() ) : while ( have_posts() ) : the_post();
$terms = get_terms( 'product_type' );
$image = get_field('product_type_tax_image');
$hero_image = $image['sizes']['medium'];

foreach ( $terms as $term ) {

// The $term is an object, so we don't need to specify the $taxonomy.
$term_link = get_term_link( $term );

// If there was an error, continue to the next term.
if ( is_wp_error( $term_link ) ) {
    continue;
}
var_dump($hero_image);
// We successfully got a link. Print it out.
echo '<a href="' . esc_url( $term_link ) . '" class="product-grid- block" style="' . $hero_image[0] . '">';
echo '<div class="product-grid-inner-txt-wrap">';
echo '<h4>' . $term->name . '</h4>';
echo '<p>' . $term->description . '</p>';
echo '</div>';
echo '</a>';
}
?>

<?php endwhile; endif; ?>
<?php wp_reset_query(); ?>

var 转储只是 returns NULL。我看过 this and this 但似乎没有帮助。我做错了什么?

看看这篇文章:

http://www.advancedcustomfields.com/resources/get-values-from-a-taxonomy-term/

要从分类术语中提取自定义字段,您需要向 get_field 函数调用添加第二个项目。像这样:

$image = get_field('product_type_tax_image', $term );

此外,您似乎正在尝试遍历 $terms,但您是在 foreach 循环之外获取自定义字段的值,因此应该将其移动到该循环内,如下所示:

    <?php if ( have_posts() ) : while ( have_posts() ) : the_post();
    $terms = get_terms( 'product_type' );


    foreach ( $terms as $term ) {
    //get $term's image
    $image = get_field('product_type_tax_image', $term );
    $hero_image = $image['sizes']['medium'];

    // The $term is an object, so we don't need to specify the $taxonomy.
    $term_link = get_term_link( $term );

    // If there was an error, continue to the next term.
    if ( is_wp_error( $term_link ) ) {
            continue;
    }
    var_dump($hero_image);
    // We successfully got a link. Print it out.
    echo '<a href="' . esc_url( $term_link ) . '" class="product-grid- block" style="' . $hero_image[0] . '">';
    echo '<div class="product-grid-inner-txt-wrap">';
    echo '<h4>' . $term->name . '</h4>';
    echo '<p>' . $term->description . '</p>';
    echo '</div>';
    echo '</a>';
    }
    ?>

    <?php endwhile; endif; ?>
    <?php wp_reset_query(); ?>