Php 可变产品的价格(商业)

Php 可变产品的价格(商业),php,wordpress,woocommerce,Php,Wordpress,Woocommerce,请告诉我。篮子从何处获得变分乘积的值,随后乘以数字并发布总计和小计?问题是您需要将产品的成本从自定义字段发送到购物篮 对于一个简单的产品来说,一切都很顺利。以下函数已添加到文件abstract wc product.php: public function get_rrp_price( $context = 'view' ) { return $this->get_meta( $key = 'rrp_price', $context = 'view' ); } function

请告诉我。篮子从何处获得变分乘积的值,随后乘以数字并发布总计和小计?问题是您需要将产品的成本从自定义字段发送到购物篮

对于一个简单的产品来说,一切都很顺利。以下函数已添加到文件abstract wc product.php

public function get_rrp_price( $context = 'view' ) {
    return $this->get_meta( $key = 'rrp_price', $context = 'view' );
}
function opal_varient_price( $price, $variation ) {

if (  $variation->product_type == 'variation'  ) {

    $user = $user ? new WP_User( $user ) : wp_get_current_user();
    $role = $user->roles[0];
    if($role == 'detailer'){$pricex = get_post_meta( $variation->variation_id, 'rrp_price',true);}
    else if($role == 'reseller'){$pricex = get_post_meta( $variation->variation_id, 'rrp_price',true);}  
    else{ $pricex = $price;}
    }
return $pricex;
}

add_filter( 'woocommerce_product_variation_get_regular_price', 'opal_varient_price' , 99, 2 );
add_filter( 'woocommerce_product_variation_get_sale_price', 'opal_varient_price' , 99, 2 );
add_filter( 'woocommerce_product_variation_get_price', 'opal_varient_price', 99, 2 );
其中,rrp_price-是具有新价格的任意字段的名称。然后在模板类wc cart.php中,即在以下函数中:

public function calculate_totals(
public function get_product_subtotal(
我被$product->get_price()替换为$product->get_rrp_price(),对于一个简单的产品,这一切都有效


但是,当您添加可变产品时,篮子将发出。我不知道在什么地方可以修复它,我猜在类wc product variable.php中,但如果是,在哪里以及如何修复?

我以前遇到过这个问题,但我找到了解决方案,请检查下面的代码,我想你可以从中获得完美的想法

function opal_varient_price( $price, $variation ) {

if (  $variation->product_type == 'variation'  ) {

    $user = $user ? new WP_User( $user ) : wp_get_current_user();
    $role = $user->roles[0];
    if($role == 'detailer'){$pricex = get_post_meta( $variation->variation_id, 'dist',true);}
    else if($role == 'reseller'){$pricex = get_post_meta( $variation->variation_id, 'res',true);}  
    else{ $pricex = $price;}
    }
return $pricex;
}

add_filter( 'woocommerce_product_variation_get_regular_price', 'opal_varient_price' , 99, 2 );
add_filter( 'woocommerce_product_variation_get_sale_price', 'opal_varient_price' , 99, 2 );
add_filter( 'woocommerce_product_variation_get_price', 'opal_varient_price', 99, 2 );
我尝试过这样做(将'dist''rest'更改为'rrp\u price'):


但在购物车中,可变产品仍然为零。

您只需在“woocommerce\u product\u variation\u get\u regular\u price”中添加挂钩,谢谢您的回答!但是在哪里放置这个钩子呢?只需将它添加到主题的function.php中,并确保您已经更改了代码$pricex应该是您的自定义字段价格。如何将常用的自定义字段更改为自定义价格字段?还是没关系?我的自定义字段名-“rrp\U价格”。使用
$variation->get\u id()
代替
$variation->variation\u id