Woocommerce set_price не работает внутри хука woocommerce_before_calculate_totals [пользовательский плагин] - PullRequest
0 голосов
/ 30 января 2020

Я попытался добавить свою оптовую цену к продуктам. Таким образом, я создал собственную страницу магазина с ручным кодированием. Когда я пытался установить оптовую цену (пользовательскую цену), она всегда применяет первоначальную цену.

Я поместил бревно в 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
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...