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

2vuwiymt  于 2022-11-22  发布在  WordPress
关注(0)|答案(1)|浏览(178)

我已经在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;
}

在此致以诚挚的感谢和问候

41zrol4v

41zrol4v1#

你把事情弄得比应该的要复杂得多,而且有一些错误:

  • 父变量product是$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文件中。现在应该更好地工作了,但是你需要完成它来使用你的自定义字段
相关:在Woocommerce中添加自定义文本到变化价格

相关问题