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

时间:2019-04-15 12:30:40

标签: php wordpress woocommerce price variations

我已经为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 个答案:

答案 0 :(得分:0)

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

  • 父变量乘积是$product函数参数(变量)。
  • 您不需要进行foreach循环,因为您已经在其中。
  • 您未使用:get_post_meta( $variation_ID , '_text_field_date_expire', true );
  • $variation变量是当前变化数据(see here)的数组
  • $variation['variation_id']是产品版本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文件中。现在,它应该更好地工作,,但是您需要完成此操作才能使用自定义字段

相关:Adding custom text to the variation price in Woocommerce