Я попытался добавить свою оптовую цену к продуктам. Таким образом, я создал собственную страницу магазина с ручным кодированием. Когда я пытался установить оптовую цену (пользовательскую цену), она всегда применяет первоначальную цену.
Я поместил бревно в woocommerce_before_calculate_totals
крючок, он работает, но цена не применяется, вместо этого он идет с первоначальной ценой продукта.
Добавить в корзину API:
add_action( 'rest_api_init', function () {
register_rest_route( 'my_plugin/v1/', '/cart/add', array(
'methods' => WP_REST_Server::EDITABLE,
'args'=>["operation"],
'callback' => 'my_plugin_cart_operations',
));
register_rest_route( 'my_plugin/v1/', '/cart/get', array(
'methods' => WP_REST_Server::READABLE,
'callback' => 'my_plugin_get_cart',
));
});
function euca_cart_operations(){
defined( 'WC_ABSPATH' ) || exit;
include_once WC_ABSPATH . 'includes/wc-cart-functions.php';
include_once WC_ABSPATH . 'includes/class-wc-cart.php';
if ( is_null( WC()->cart ) ) {
wc_load_cart();
}
$data=$_REQUEST;
$product_id=$data['product_id']; //here product is variation id because it's coming from wholesale page
$quantity=$data['quantity'];
$variation_id=$data['variation_id'];
return WC()->cart->add_to_cart( $product_id,$quantity,$variation_id )
}
Крюк
add_action( 'woocommerce_before_calculate_totals', 'my_plugin_test', 20,1);
function my_plugin_test($cart){
if ( did_action( 'woocommerce_before_calculate_totals' ) >= 2 )
return;
// Loop through cart items
foreach ( $cart->get_cart() as $item ) {
$wholesale=get_post_meta( $value['data']->variation_id, 'wholesale_customer_wholesale_price', true ); //I'm getting this too
$txt = "Mine Product-->".$item ['data']->id ."---> Price :".$wholesale;
file_put_contents('logs.txt', $txt.PHP_EOL , FILE_APPEND | LOCK_EX)
$item['data']->set_price( 40 ); //custom price
}
}