我已经为Woocommerce中的所有产品设置了价格后缀(在我的情况下为“每盒”)。这适用于可变产品以及没有问题的单个产品。
现在,对于某种产品的某些产品变型,我希望将此前缀更改为“每托盘”。我已经读了很多书,尝试了很多,但是我还没有找到可以应用于产品各个变体的解决方案。谁能帮我吗?
下面是我尝试过的代码。没有错误消息,但不会更改特定ID的价格。
add_filter('woocommerce_available_variation', 'variation_price_custom_suffix', 10, 3 );
function variation_price_custom_suffix( $variation_data, $product, $variation ) {
$args = array(
'post_parent' => get_the_ID() // get parent post-ID
);
$variations = get_posts( $args );
foreach ( $variations as $variation ) {
// get variation ID
$variation_ID = $variation->ID;
// get variation price
$variation_price = $product_variation->get_price_html();
get_post_meta( $variation_ID , '_text_field_date_expire', true );
}
if($variation_ID == 732) {
$variation_data['price_html'] .= "Text after price";
}
return $variation_data;
}
在此先感谢并致以问候 焦躁
答案 0 :(得分:0)
您正在使它变得更加复杂,并且存在一些错误:
$product
函数参数(变量)。get_post_meta( $variation_ID , '_text_field_date_expire', true );
$variation
变量是当前变化数据(see here)的数组$variation['variation_id']
是产品版本ID $product->get_id()
有2种可能的方式:
1)定位特定变量产品的所有产品变体:
add_filter('woocommerce_available_variation', 'variation_price_custom_suffix', 10, 3 );
function variation_price_custom_suffix( $variation_data, $product, $variation ) {
// For a specific variable product ID (and all its variations)
if( $product->get_id() == 732 ) {
$date_expire = get_post_meta( $product->get_id(), '_text_field_date_expire', true );
$variation_data['price_html'] .= ' ' . __("Text after price");
}
return $variation_data;
}
2)定位唯一的产品变体ID:
add_filter('woocommerce_available_variation', 'variation_price_custom_suffix', 10, 3 );
function variation_price_custom_suffix( $variation_data, $product, $variation ) {
// For a specific product variation ID
if( $variation['variation_id'] == 732 ) {
$date_expire = get_post_meta( $variation['variation_id'], '_text_field_date_expire', true );
$variation_data['price_html'] .= ' ' . __("Text after price");
}
return $variation_data;
}
代码进入您的活动子主题(或活动主题)的function.php文件中。现在,它应该更好地工作,,但是您需要完成此操作才能使用自定义字段。