Добавление поля к товару в WooCommerce может быть полезным, если вам нужно собирать дополнительную информацию от пользователей (например, комментарии, дополнительные параметры, персонализированные опции и т.д.) или добавить дополнительную характеристику к продукту. Существует несколько способов добавить новое поле: через код или с помощью плагинов. 1. Добавление поля к товару через код Если вы хотите добавить кастомное поле к товарам в WooCommerce, например, текстовое поле или выбор опций, можно сделать это с помощью PHP-кода, добавленного в файл functions.php вашей темы. В зависимости от типа поля, можно настроить ввод данных на странице товара и сохранить его в заказе. Пример 1: Добавление текстового поля на странице товара Этот пример добавляет текстовое поле к товарам на странице товара, и введённые данные будут добавляться в корзину и заказ. Введите персонализированный текст Откройте файл functions.php вашей темы. Добавьте следующий код: // Добавляем текстовое поле на страницу товара add_action( 'woocommerce_before_add_to_cart_button', 'custom_text_field_product', 9 ); function custom_text_field_product() { echo '<div class="custom-text-field">'; echo '<label for="custom_text">Введите персонализированный текст</label>'; echo '<input type="text" id="custom_text" name="custom_text" value="" placeholder="Ваш текст" />'; echo '</div>'; } // Сохраняем значение текстового поля при добавлении товара в корзину add_filter( 'woocommerce_add_cart_item_data', 'custom_save_text_field', 10, 2 ); function custom_save_text_field( $cart_item_data, $product_id ) { if ( isset( $_POST['custom_text'] ) ) { $cart_item_data['custom_text'] = sanitize_text_field( $_POST['custom_text'] ); } return $cart_item_data; } // Отображаем значение текстового поля в корзине add_filter( 'woocommerce_get_item_data', 'custom_display_text_field_cart', 10, 2 ); function custom_display_text_field_cart( $item_data, $cart_item ) { if ( isset( $cart_item['custom_text'] ) ) { $item_data[] = array( 'name' => 'Персонализированный текст', 'value' => sanitize_text_field( $cart_item['custom_text'] ), ); } return $item_data; } // Сохраняем и отображаем данные в заказе add_action( 'woocommerce_checkout_create_order_line_item', 'custom_save_text_field_order', 10, 4 ); function custom_save_text_field_order( $item, $cart_item_key, $values, $order ) { if ( isset( $values['custom_text'] ) ) { $item->add_meta_data( 'Персонализированный текст', $values['custom_text'], true ); } } Этот код добавляет текстовое поле на страницу товара. Введённый пользователем текст будет отображён: В корзине В деталях заказа (в админке и в письме покупателю) Пример 2: Добавление выпадающего списка (select) к товару Если вам нужно добавить выбор из нескольких вариантов (например, выбор размера, цвета или других параметров), можно добавить выпадающий список. Выберите опцию: Опция 1 Опция 2 Опция 3 // Добавляем выпадающий список на страницу товара add_action( 'woocommerce_before_add_to_cart_button', 'custom_select_field_product', 10 ); function custom_select_field_product() { echo '<div class="custom-select-field">'; echo '<label for="custom_option">Выберите опцию:</label>'; echo '<select id="custom_option" name="custom_option">'; echo '<option value="Опция 1">Опция 1</option>'; echo '<option value="Опция 2">Опция 2</option>'; echo '<option value="Опция 3">Опция 3</option>'; echo '</select>'; echo '</div>'; } // Сохраняем выбранное значение при добавлении в корзину add_filter( 'woocommerce_add_cart_item_data', 'custom_save_select_field', 10, 2 ); function custom_save_select_field( $cart_item_data, $product_id ) { if ( isset( $_POST['custom_option'] ) ) { $cart_item_data['custom_option'] = sanitize_text_field( $_POST['custom_option'] ); } return $cart_item_data; } // Отображаем выбранное значение в корзине add_filter( 'woocommerce_get_item_data', 'custom_display_select_field_cart', 10, 2 ); function custom_display_select_field_cart( $item_data, $cart_item ) { if ( isset( $cart_item['custom_option'] ) ) { $item_data[] = array( 'name' => 'Выбранная опция', 'value' => sanitize_text_field( $cart_item['custom_option'] ), ); } return $item_data; } // Сохраняем и отображаем данные в заказе add_action( 'woocommerce_checkout_create_order_line_item', 'custom_save_select_field_order', 10, 4 ); function custom_save_select_field_order( $item, $cart_item_key, $values, $order ) { if ( isset( $values['custom_option'] ) ) { $item->add_meta_data( 'Выбранная опция', $values['custom_option'], true ); } } Этот код добавляет выпадающий список (select) на страницу товара. Выбранное пользователем значение будет сохранено и отображено в корзине и заказе. 2. Использование плагинов для добавления полей к товару Если вы не хотите работать с кодом или вам нужно добавить более сложные поля (например, текстовые области, чекбоксы, радиокнопки и т.д.), можно воспользоваться плагинами, которые позволяют легко добавлять дополнительные поля к товарам. Популярные плагины для добавления полей к товарам: 1. WooCommerce Product Add-Ons ? Позволяет добавлять текстовые поля, выпадающие списки, чекбоксы, радиокнопки и другие элементы к товарам WooCommerce. ? Лёгкий в использовании интерфейс для настройки. ? Поддержка платных опций - вы можете добавлять дополнительные стоимости для определённых опций (например, выбор подарочной упаковки). 2. Advanced Custom Fields (ACF) ? Мощный плагин для добавления любых кастомных полей на сайт. ? Позволяет создавать кастомные поля не только для товаров, но и для любых других страниц или записей. ? В сочетании с WooCommerce позволяет добавлять дополнительные параметры к товарам. 3. WooCommerce Custom Product Addons ? Простой плагин для добавления различных полей к товарам. ? Поддерживает текстовые поля, выпадающие списки, чекбоксы, текстовые области. ? Лёгкий в использовании и настройке. Шаги для настройки плагина WooCommerce Product Add-Ons: Установите и активируйте плагин через Плагины > Добавить новый. Перейдите в настройки плагина и создайте новые поля для товара. Выберите тип поля (текстовое, список, чекбокс и т.д.). Настройте, какие товары или категории товаров будут содержать эти поля. Поля будут отображаться на страницах товаров, и пользователи смогут вводить свои данные при добавлении товара в корзину. 3. Вывод кастомных полей в админке заказа Если вы добавили кастомное поле и хотите видеть его в панели администратора WooCommerce (например, в деталях заказа), вы можете настроить его вывод через код. Пример кода для отображения кастомного поля в админке заказа: Откройте файл functions.php. Добавьте следующий код: // Вывод кастомного поля в админке заказа add_action( 'woocommerce_admin_order_data_after_order_details', 'custom_display_order_data_in_admin' ); function custom_display_order_data_in_admin( $order ) { foreach ( $order->get_items() as $item_id => $item ) { if ( $item->get_meta( 'Персонализированный текст' ) ) { echo '<p><strong>Персонализированный текст:</strong> ' . $item->get_meta( 'Персонализированный текст' ) . '</p>'; } } } Этот код отображает кастомное поле "Персонализированный текст" в админке WooCommerce на странице деталей заказа. Добавление полей к товарам в WooCommerce можно сделать через код, добавляя текстовые поля, выпадающие списки или любые другие элементы, или с помощью плагинов для более гибкой и быстрой настройки. В зависимости от целей, вы можете собирать дополнительную информацию от пользователей, отображать эти данные в корзине и админке заказа, а также сохранять их для дальнейшей обработки.