Support

Account

Home Forums General Issues ACF get image from product term

Solving

ACF get image from product term

  • I would like to display a brand logo on my product pages. I use Advanced Custom Fields (ACF) to insert the image on the taxonomy “Brand”.

    https://snipboard.io/JcYvM4.jpg

    I have tried the code below, and tried to do as on the page here, but it doens’t work…

    https://www.advancedcustomfields.com/resources/adding-fields-taxonomy-term/

    *The image return format is “Array”.

    Here is my code:

    
    function action_woocommerce_before_variations_form(  ) { 
    
        $queried_object = get_queried_object(); 
        $taxonomy = $queried_object->taxonomy;
        $term_id = $queried_object->term_id;  
        
        $image = get_field('brand_logo', $taxonomy . '_' . $term_id);
        echo '<img src="'.$image['url'].'" />';
        
    }; 
             
    // add the action 
    add_action( 'woocommerce_before_variations_form', 'action_woocommerce_before_variations_form', 10, 0 ); 
    

    I really hope someone can help!

  • try using either

    
    $image = get_field('brand_logo', 'term_' . $term_id);
    

    or

    
    $image = get_field('brand_logo', $queried_object);
    
  • Hi

    Thanks for your reply, but unfortunately none of the things work.

    I have tried with var_dump($image); but get the message “NULL” every time.

  • Are you trying to show the image on a category page or on a single product page?

  • Hi John

    A single product page.

  • Your issue is that $queried_object = get_queried_object(); is returning the post object for the current product.

    What you need to do is to use get_post_terms() or the function in WC that returns the “brand” taxonomy term that is associated with the product. Then use what is returned from that to get the image from the term.

  • I had a bit of that feeling. Before I got to the code I was laying out the thread with, I had also tried with get_the_terms()

    I have again made the code below, but here too I can not make it work

    
    <?php
    function prefix_add_brand_before_variations_form() {
    	
    	$term = get_the_terms( get_the_ID(), 'brand' );
    	
           if( ! empty( $term ) ) { ?>
    
      		<img src="<?php the_field('brand_logo', $term); ?>" />
    		  
        
     		<?php }
    	
    }
    
    add_action('woocommerce_before_variations_form', 'prefix_add_brand_before_variations_form', 10, 0); 
    

    I have tried both get_the_terms() and get_post_terms(). If I use get_post_terms() my product pages shows a critical error.

  • if get_the_terms() is working then it will return an array of terms rather than one term

    
    $terms = get_the_terms( get_the_ID(), 'brand' );
    if (!empty($terms)) {
      $term = $terms[0];
      ?><img src="<?php the_field('brand_logo', $term); ?>" /><?php 
    }
    
  • I really appreciate your help, but it still does not work. My website shows critical errors when I run the code.

    
    <?php
    function prefix_add_brand_before_variations_form() {
    	
    	$terms = get_the_terms( get_the_ID(), 'brand' );
    	
    	print_r($terms);
    	
    }
    
    add_action('woocommerce_before_variations_form', 'prefix_add_brand_before_variations_form', 10, 0);
    

    I have tried to see what print_r() can show about $terms. At first glance, it does not look right? I get this output:

    WP_Error Object ( [errors] => Array ( [invalid_taxonomy] => Array ( [0] => Invalid taxonomy. ) ) [error_data] => Array ( ) [additional_data:protected] => Array ( ) )

  • Sorry, I am not all that familiar with the nuances of WC and I do not know the correct way to get terms for their “brand” taxonomy or even how to get the current product post ID in the filter you are using.

Viewing 10 posts - 1 through 10 (of 10 total)

You must be logged in to reply to this topic.