Запустите функцию JS в add_action WooCommerce - PullRequest
0 голосов
/ 04 мая 2020

У меня есть это действие в моих функциях. php:

add_action( 'woocommerce_before_calculate_totals', 'adding_custom_price', 10, 1);
function adding_custom_price( $cart ) {
global $current_user, $woocommerce, $wpdb;

    // This is necessary for WC 3.0+
    if ( is_admin() && ! defined( 'DOING_AJAX' ) )
        return;

    // Avoiding hook repetition (when using price calculations for example)
    if ( did_action( 'woocommerce_before_calculate_totals' ) >= 2 )
        return;

            $quantity = 0;
                foreach ( $cart->get_cart() as $cart_item ) {
                    $quantity += $cart_item['quantity'];
                    $product_id = $cart_item['data']->get_id();
                    $product_price = $cart_item['data']->get_price();
                    $categorie_id = $cart_item['data']->get_category_ids();
                    $korting_product = get_field( 'discount_points', $product_id );

                    //Zet prijs min benegas korting
                    $cart_item['data']->set_price($product_price - $korting_product);
                }

echo "<script type='text/javascript'>alert('$quantity');</script>";

}

Но с этой строкой:

echo "<script type='text/javascript'>alert('$quantity');</script>";

Корзина продолжает загружаться после меняя количество так что я делаю не так. Я не получаю оповещение.

1 Ответ

0 голосов
/ 04 мая 2020

Примечание 1: зачем использовать предупреждение javascript? а не встроенный функционал WooCommerce? wc_add_notice( __( 'my message' ), 'error');


Примечание 2: Вместо добавления количества в l oop вы также можете использовать $items_in_cart = $cart->get_cart_contents_count();

Тогда вы получите

function adding_custom_price( $cart ) {
    // This is necessary for WC 3.0+
    if ( is_admin() && ! defined( 'DOING_AJAX' ) )
        return;

    // Avoiding hook repetition (when using price calculations for example)
    if ( did_action( 'woocommerce_before_calculate_totals' ) >= 2 )
        return;

    $quantity = 0;

    foreach ( $cart->get_cart() as $cart_item ) {
        $quantity += $cart_item['quantity'];

        $product_id = $cart_item['data']->get_id();
        $product_price = $cart_item['data']->get_price();
        $categorie_id = $cart_item['data']->get_category_ids();
        //$korting_product = get_field( 'discount_points', $product_id );
        // For debugging purposes, REMOVE!
        $korting_product = 5;

        //Zet prijs min benegas korting
        $cart_item['data']->set_price($product_price - $korting_product);
    }

    if ( $quantity > 5 ) {
        wc_clear_notices();
        wc_add_notice( __( $quantity ), 'error');
    }
}
add_action( 'woocommerce_before_calculate_totals', 'adding_custom_price', 10, 1);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...