在 Woocommerce 的存档页面上获取特定产品属性的 slug 列表
Get list of slugs for a specific product attribute on archive pages in Woocommerce
我需要根据一组成分(这是一个 Woo 产品属性)在产品概述(类别、存档)页面上显示一些自定义图标。
我正在挂钩 woocommerce_after_shop_loop_item_title
,这是展示我想要的内容的正确位置。但是,我无法轻松获得属性的 slug 列表。我的目标是获得类似于 ['onion', 'fresh-lettuce', 'cheese']
或其他任何类型的 slug 数组。
我目前的尝试是这样的:
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 文件。已测试并有效。
现在,如果您想在逗号分隔的列表中获取术语 slugs,您将使用以下内容:
// 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>';
}
我需要根据一组成分(这是一个 Woo 产品属性)在产品概述(类别、存档)页面上显示一些自定义图标。
我正在挂钩 woocommerce_after_shop_loop_item_title
,这是展示我想要的内容的正确位置。但是,我无法轻松获得属性的 slug 列表。我的目标是获得类似于 ['onion', 'fresh-lettuce', 'cheese']
或其他任何类型的 slug 数组。
我目前的尝试是这样的:
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 文件。已测试并有效。
现在,如果您想在逗号分隔的列表中获取术语 slugs,您将使用以下内容:
// 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>';
}