php-在Woocommerce的存档页面上获取特定产品属性的子弹列表

我需要基于一组成分(这是Woo产品属性)在产品概述(类别,存档)页面上显示一些自定义图标.

我挂在woocommerce_after_shop_loop_item_title上,那是显示我想要的内容的正确位置.但是,我无法轻松获得该属性的标签列表.我的目标是获得各种各样的弹头,例如[‘onion’,’fresh-lettuce’,’cheese’]等.

我目前的尝试是这样的:

add_filter( 'woocommerce_after_shop_loop_item_title', function () {
    global $product;
    $attrs = $product->get_attributes();
    $slugs = $attrs->get_slugs( 'ingredients' );
    var_dump( $slugs );
});

但这不起作用.

请注意,$product-> get_attributes()有效,但对于类别页面上的每个产品都是相同的.

请指教!

解决方法:

使用WC_Product get_attribute()方法尝试以下方法:

add_filter( 'woocommerce_after_shop_loop_item_title', 'loop_display_ingredients', 15 );
function loop_display_ingredients() {
    global $product;
    // The attribute slug
    $attribute = 'ingredients';
    // Get attribute term names in a coma separated string
    $term_names = $product->get_attribute( $attribute );

    // Display a coma separted string of term names
    echo '<p>' . $term_names . '</p>';
}

代码进入您的活动子主题(或活动主题)的function.php文件中.经过测试和工作.

现在,如果要在逗号分隔的列表中获得术语“塞子”,将使用以下代码:

// The attribute slug
$attribute = 'ingredients';
// Get attribute term names in a coma separated string
$term_names = $product->get_attribute( $attribute );

// Get the array of the WP_Term objects
$term_slugs = array();
$term_names = str_replace(', ', ',', $term_names);
$term_names_array = explode(',', $term_names);
if(reset($term_names_array)){
    foreach( $term_names_array as $term_name ){
        // Get the WP_Term object for each term name
        $term = get_term_by( 'name', $term_name, 'pa_'.$attribute );
        // Set the term slug in an array
        $term_slugs[] = $term->slug;
    }
    // Display a coma separted string of term slugs
    echo '<p>' . implode(', ', $term_slugs); . '</p>';
}
上一篇:mysql-编写SQL查询以删除Woocommerce中的旧订单


下一篇:php-在Woocommerce的单个产品页面中添加产品说明字段