Это работает, спасибо за отличную помощь. У меня есть пользовательская таблица в payment.php, плохо ли она вызывать функцию вроде <? Php custom_checkbox_checkout_field (); ?>?

деле оформления заказа Woocommerce я пытаюсь добавить флажок, который добавляет дополнительный продукт.

У меня есть рабочий код, который добавляет комиссию и обновляет корзину по щелчку флажка, но я хочу добавить продукт вместо дополнительной платы:

function cart_custom_fee( $cart ) {

    if( !$_POST || ( is_admin() && ! is_ajax() ) ) {
        return;
    }

    if( isset( $_POST['post_data'] ) ) {
        parse_str( $_POST['post_data'], $post_data );   
    } else {
        $post_data = $_POST;
    }

    if( isset( $post_data['add_test_item'] ) ) { // This is the checkbox name
        WC()->cart->add_fee('Test Item', 35);
    }
}
add_action( 'woocommerce_cart_calculate_fees', 'cart_custom_fee' );

Это код для флажка

<script>
             jQuery(document).ready(function(){
                   jQuery('#cp-checkbox').click(function() {
                      jQuery('body').trigger('update_checkout'); 
                   });
                });
</script>

И код работает ...

Теперь я попытался изменить код, чтобы добавить продукт:

function add_item_checkout( $cart ) {

    if( !$_POST || ( is_admin() && ! is_ajax() ) ) {
        return;
    }

    if( isset( $_POST['post_data'] ) ) {
        parse_str( $_POST['post_data'], $post_,data );   
    } else {
        $post_data = $_POST;
    }

    if( isset( $post_data['add_test_item'] ) ) { // This is the checkbox name
        WC()->cart->add_to_cart( 123 ); // 123 is the product ID
    }
}
add_action( 'woocommerce_calculate_totals', 'add_item_checkout' );

Но это не сработало. Любая помощь будет оценена.

Ответы на вопрос(1)

Ваш ответ на вопрос