Для добавления дополнительных услуг в корзину WooCommerce вам потребуется немного кодирования и настройки. Вот шаги, которые вам нужно выполнить:
Шаг 1: Создайте дополнительные поля для услуг
Первым делом вам понадобится создать дополнительные поля для услуг, которые вы хотите добавить в корзину. Чтобы это сделать, вы можете добавить функцию в functions.php
вашей WordPress темы, используя хук "woocommerce_before_add_to_cart_button". В этой функции вы создаете всплывающее окно для выбора услуг и сохраняете значения в пользовательский метаданных товара.
function add_extra_services() { global $product; echo '<div class="extra-services"> <h2>Дополнительные услуги:</h2> <input type="checkbox" name="extra_service1" value="extra_service1" /> Дополнительная услуга 1<br> <input type="checkbox" name="extra_service2" value="extra_service2" /> Дополнительная услуга 2<br> </div>'; } add_action( 'woocommerce_before_add_to_cart_button', 'add_extra_services' ); function save_extra_services( $cart_item_data, $product_id ) { if( isset( $_POST['extra_service1'] ) ) { $cart_item_data['extra_service1'] = $_POST['extra_service1']; } if( isset( $_POST['extra_service2'] ) ) { $cart_item_data['extra_service2'] = $_POST['extra_service2']; } return $cart_item_data; } add_filter( 'woocommerce_add_cart_item_data', 'save_extra_services', 10, 2 ); function display_services_cart( $item_name, $cart_item, $cart_item_key ) { if ( isset( $cart_item['extra_service1'] ) ) { $item_name .= '<br>' . 'Дополнительная услуга 1: ' . $cart_item['extra_service1']; } if ( isset( $cart_item['extra_service2'] ) ) { $item_name .= '<br>' . 'Дополнительная услуга 2: ' . $cart_item['extra_service2']; } return $item_name; } add_filter( 'woocommerce_cart_item_name', 'display_services_cart', 10, 3 );
Шаг 2: Отобразите выбранные услуги в корзине и чекауте
Теперь, когда вы создали дополнительные поля и сохраняете их значения в корзину, нужно отобразить выбранные услуги в корзине и чекауте. Для этого вы можете использовать хук "woocommerce_cart_item_name" и функцию "display_services_cart" из примера выше.
Шаг 3: Сохраните выбранные услуги при оформлении заказа
При оформлении заказа выбранные услуги также должны быть сохранены. Для этого вам нужно добавить функцию, использующую хук "woocommerce_checkout_create_order_line_item", которая сохраняет дополнительные значения в заказ.
function save_services_order( $item, $cart_item_key, $values, $order ) { if ( isset( $values['extra_service1'] ) ) { $item->add_meta_data( 'Дополнительная услуга 1', $values['extra_service1'] ); } if ( isset( $values['extra_service2'] ) ) { $item->add_meta_data( 'Дополнительная услуга 2', $values['extra_service2'] ); } } add_action( 'woocommerce_checkout_create_order_line_item', 'save_services_order', 10, 4 );
Шаг 4: Отобразите выбранные услуги в деталях заказа
Чтобы отобразить выбранные услуги в деталях заказа, вы можете использовать хук "woocommerce_order_item_name" и функцию "display_services_order".
function display_services_order( $name, $item, $is_visible ) { if ( $item->is_type( 'line_item' ) ) { $extra_services = array(); if ( $value = $item->get_meta( 'Дополнительная услуга 1', true ) ) { $extra_services[] = 'Дополнительная услуга 1: ' . $value; } if ( $value = $item->get_meta( 'Дополнительная услуга 2', true ) ) { $extra_services[] = 'Дополнительная услуга 2: ' . $value; } if ( ! empty( $extra_services ) ) { $name .= '<br>' . implode( '<br>', $extra_services ); } } return $name; } add_filter( 'woocommerce_order_item_name', 'display_services_order', 10, 3 );
Это основы того, как добавить дополнительные услуги в корзину WooCommerce. Вы можете настроить код и полиэтиленовую пользовательскую ввод и понизить его в соответствии с вашими потребностями.