我一直在尝试使用here找到的代码:
// For WooCommerce Version 3.0+ (only)
add_action( 'woocommerce_shop_loop_item_title', 'custom_attributes_display', 20 );
function custom_attributes_display(){
// Just for product category archives pages
if(is_product_category()){
global $product;
// the array of attributes names
$attribute_names = array('pa_guaranteed-ram', 'pa_cpu', 'pa_disk', 'pa_traffic');
foreach( $attribute_names as $key => $attribute_name ) {
// For WooCommerce version 3.0+
$product_id = $product->get_id(); // WC 3.0+
// Getting the value of an attribute (OK for WC 3.0+)
$attribute_value = array_shift(wc_get_product_terms( $product_id, $attribute_name));
// Displays only if attribute exist for the product
if(!empty($attribute_value)){ // Updated
echo $attribute_value;
// Separating each number by a " / "
if($key < 3) echo ' / ';
}
}
}
}
但我总是最终得到错误:可捕获的致命错误:类WP_Term的对象无法在第51行的../functions.php中转换为字符串这是这一行:
echo $attribute_value;
我试图从中提取术语的四个属性中的每一个只有一个值,所以我不确定array_shift是否是问题的一部分,但是在删除时它仍然不起作用。
我还检查了many other posts和guides但仍然无法弄清楚..我是PHP新手,任何人感谢您的帮助,如果我发布的内容不正确,我很抱歉。
这篇文章不是任何其他帖子的副本,因为另一篇帖子有很多人说它有效,并且&#34;谢谢!&#34;当它对我不起作用时,显然我的情况有所不同......而且,由于是新的,我无法在另一篇文章上发表评论,所以我应该如何获得帮助?洛尔
答案 0 :(得分:0)
您的exec代码应该有效地使用$product->id
而不是$product->get_id()
。
// For WooCommerce Version 3.0+ (only)
add_action( 'woocommerce_shop_loop_item_title', 'custom_attributes_display', 20 );
function custom_attributes_display(){
// Just for product category archives pages
if(is_product_category()){
global $product;
// the array of attributes names
$attribute_names = array('pa_guaranteed-ram', 'pa_cpu', 'pa_disk', 'pa_traffic');
foreach( $attribute_names as $key => $attribute_name ) {
// Getting the value of an attribute (OK for WC 3.0+)
$attribute_value = array_shift(wc_get_product_terms( $product->id, $attribute_name));
// Displays only if attribute exist for the product
if(!empty($attribute_value)){ // Updated
echo $attribute_value;
// Separating each number by a " / "
if($key < 3) echo ' / ';
}
}
}
}