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

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

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

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

  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 '';
        }
    }
}

person hamirom    schedule 22.04.2019    source источник


Ответы (1)


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

Плагины Taxonomy Images и Категория и изображение таксономии позволяют использовать изображения для всех терминов пользовательской таксономии 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 вашей активной дочерней темы (или активной темы). Проверено и работает.

person LoicTheAztec    schedule 23.04.2019