В 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 поддерживает работу с куки для управления данными между запросами.
Атрибуты продукта — это нечто очень специфическое и более сложное в 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 вашей активной дочерней темы (или активной темы). Проверено и работает.