#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. Если этот ответ подходит для вас, пожалуйста, отметьте его как принятый.