为了账号安全,请及时绑定邮箱和手机立即绑定

WooCommerce中可变产品的条件自定义价格后缀

WooCommerce中可变产品的条件自定义价格后缀

PHP
森栏 2021-04-09 14:15:07
我已经为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;}在此先多谢,并致以问候
查看完整描述

1 回答

?
繁星淼淼

TA贡献1775条经验 获得超11个赞

您正在使它变得更加复杂,并且存在一些错误:

  • 父变量乘积是$product函数参数(变量)。

  • 您不需要进行foreach循环,因为您已经在其中。

  • 您没有使用: get_post_meta( $variation_ID , '_text_field_date_expire', true );

  • $variation变量是当前变化数据的数组(请参阅此处)

  • $variation['variation_id'] 是产品变体ID

  • 父变量产品ID(如果需要)为 $product->get_id()

所以两种可能的方式:

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文件中。现在应该可以更好地工作了,但是您需要完成它才能使用您的自定义字段。


查看完整回答
反对 回复 2021-04-23
  • 1 回答
  • 0 关注
  • 241 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信