Проверка условных полей

#php #wordpress #woocommerce

#php #wordpress #woocommerce

Вопрос:

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

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

Я провел много исследований и смог найти только условные поля на основе product_id, но ничего не на основе количества продукта, поэтому я надеюсь, что этот вопрос будет полезен для других.

Любая помощь или подсказка очень ценятся.

Ответ №1:

Вы можете проверить товары в корзине через WC()->cart->get_cart() . После этого у вас будет доступ к таким данным, как идентификатор продукта, идентификатор варианта и идентификатор категории всех товаров в вашей корзине.

Так, например, вы можете проверить, есть ли ваш тур в корзине, проверив наличие определенного идентификатора продукта. Затем добавьте количество пользовательских полей оформления заказа, равное количеству этого конкретного товара в корзине.

 add_action( 'woocommerce_after_order_notes', 'custom_checkout_fields_based_on_quantity' ); 
function custom_checkout_fields_based_on_quantity( $checkout ) {
    foreach( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {

        if ( $cart_item['product_id'] == '123' ) {

            echo '<div id="fellow_travellers"><h4>Group information</h4>';

            for ( $x = 1; $x <= $cart_item['quantity']; $x   ) {

                woocommerce_form_field( 'fellow_traveller_full_name_' . $x, array(
                        'type'          => 'text',
                        'required'      => true,
                        'class'         => array( 'my-class form-row-wide' ),
                        'label'         => sprintf( '%s %s', __( 'Full name fellow traveller' ), $x ),
                        'placeholder'   => __( 'John Doe' ),
                    )
                );

            }

            echo '</div>';
        } 
    }
}
  

По той же логике вы можете обработать проверку и сохранить свои пользовательские поля проверки, как описано здесь: Проверка WooCommerce — добавление настраиваемого специального поля

Комментарии:

1. Если этот ответ подходит для вас, пожалуйста, отметьте его как принятый.