Отображение пользовательских изображений терминов таксономии для атрибутов продукта WooCommerce

В WooCommerce я использую плагин Категория и изображение таксономии, который позволяет мне добавлять изображения в термины атрибутов продукта.

Теперь я пытаюсь отобразить для определенного атрибута продукта изображения соответствующих терминов для каждого продукта на странице магазина.

Автор плагина Категория и изображение таксономии предложил использовать следующий код для отображения изображения термина:

  if (function_exists('get_wp_term_image'))
  {
      $meta_image = get_wp_term_image($term_id); 
      //It will give category/term image url 
  }
  echo $meta_image; // category/term image url

Я использую приведенный ниже код для отображения названий атрибутов продукта «цвет» на странице магазина:

add_action('woocommerce_after_shop_loop_item','add_attribute');
function add_attribute() {
    global $product;

    $spec_val = $product->get_attribute('spec');

    if (!empty($spec_val)) { 
        echo'<span class = "view_attr"> SPECIFICATION: '  . $spec_val  . '</span>';
    }
}

Как отображать термин изображения?

Возможно, это решение:

add_action('woocommerce_after_shop_loop_item','woo_new_product_tab_content');
function woo_new_product_tab_content() {
    global $product;

    $ingredients = $product->get_attributes( 'color' );

    foreach( $ingredients as $attr_name => $attr ){
        foreach( $attr->get_terms() as $term ){
            if ( wc_attribute_label( $attr_name ) == "Color" ) {
                echo $term->name ;
                $meta_image = get_wp_term_image($term->term_id);
                echo '<img src = "'.$meta_image.'"/>';
            } 
            else echo '';
        }
    }
}

🤔 А знаете ли вы, что...
PHP поддерживает работу с куки для управления данными между запросами.


1
2 234
1

Ответ:

Решено

Атрибуты продукта — это нечто очень специфическое и более сложное в WooCommerce, чем в других таксономиях. Каждый атрибут продукта представляет собой таксономию, имеет свои собственные термины и может использоваться для вариаций различных продуктов...

Плагины Таксономия изображений и Категория и изображение таксономии позволяют использовать изображения во всех терминах пользовательских таксономий WooCommerce в качестве тега продукта и атрибутов продукта (категория продукта уже имеет эту функцию по умолчанию).

Здесь мы используем Категория и изображение таксономии и его специальную функцию get_wp_term_image().

В приведенном ниже коде вы можете включить несколько атрибутов продукта, определенных в массиве. если опция «Включить архивы?» включен для атрибута продукта, вы можете дополнительно использовать термин ссылки.

add_action('woocommerce_after_shop_loop_item','woo_new_product_tab_content');
function woo_new_product_tab_content() {
    global $product;

    // Define your product attribute labels in the array (label names)
    $defined_pa_labels = array( 'Color' );

    // Loop through WC_Product_Attribute Objects
    foreach( $product->get_attributes() as $taxonomy => $product_attribute ) {
        $taxonomy_name  = $product_attribute->get_name();       // Slug
        $taxonomy_label = wc_attribute_label( $taxonomy_name ); // Name (label name)

        if ( in_array( $taxonomy_label, $defined_pa_labels ) ) {

            // Loop through product attribute WP_Term Objects
            foreach( $product_attribute->get_terms() as $term ) {
                $term_name = $term->name;  // Term name
                $term_slug = $term->slug;  // Term slug
                $term_id = $term->term_id; // Term ID

                // Get product attribute term image
                if ( $image_url = get_wp_term_image( $term_id ) ) {

                    // Get product attribute term link (optional) 
                    // if the product attribute is enabled on archives)
                    $term_url  = get_term_link( $term, $taxonomy );

                    // Output
                    echo '<span style = "text-align:center"><img src = "'.esc_url( $image_url).'"/>'.$term->name.'</span>';
                }
            }
        }
    }
}

Код находится в файле function.php вашей активной дочерней темы (или активной темы). Проверено и работает.