Intereting Posts
Загрузите бесплатную пробную версию после ввода электронной почты Какие стили доступны в ядре? Пользовательские роли пользователя Элементы панели администратора активны только на странице плагина Как подключиться к «последнему» документу в медиа-библиотеке? Отображение динамического уведомления администратора Почему в редакторе удаляются каретки? Как добавить нечетные и четные классы ко всем навигационным ссылкам через ходунки? Уведомление по электронной почте о новом сообщении включает код Добавление параметра в короткий код Боковая панель случайного автора Лучшие практики тестирования A / B? Начать запрос со второго поста без смещения Пользовательский тип сообщения не будет принимать мои пользовательские поля Проблема: загрузка CSV-файла работает только тогда, когда выполняется «Просмотр источника страницы»

Форма заказа клиента Woocommerce

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

Вы можете перезаписать шаблоны woocommerce, разместив их в своей теме. Чтобы перезаписать, например, шаблон form-billing.php , поместите его в yourtheme/woocommerce/checkout/form-billing.php .

Вы также можете добавить фильтр, чтобы перезаписать функцию рендеринга поля формы. Или даже переписать всю функцию.

Чтобы добавить новые поля, обратитесь к документации WooCommerce .

Я вставляю код из документации для добавления полей, чтобы не оставлять ответ только со ссылкой:

 /** * Add the field to the checkout */ add_action( 'woocommerce_after_order_notes', 'wpse_287663_custom_checkout_field' ); function wpse_287663_custom_checkout_field( $checkout ) { echo '<div id="custom_checkout_field"><h2>' . __('My Field') . '</h2>'; woocommerce_form_field( 'field_name', array( 'type' => 'text', 'class' => array('my-field-class form-row-wide'), 'label' => __('Fill in this field'), 'placeholder' => __('Enter something'), ), $checkout->get_value( 'field_name' )); echo '</div>'; } /** * Process the checkout */ add_action('woocommerce_checkout_process', 'wpse_287663_custom_checkout_field_process'); function wpse_287663_custom_checkout_field_process() { // Check if set, if its not set add an error. if ( ! $_POST['field_name'] ) wc_add_notice( __( 'Please enter something into this new shiny field.' ), 'error' ); } /** * Update the order meta with field value */ add_action( 'woocommerce_checkout_update_order_meta', 'wpse_287663_custom_checkout_field_update_order_meta' ); function wpse_287663_custom_checkout_field_update_order_meta( $order_id ) { if ( ! empty( $_POST['field_name'] ) ) { update_post_meta( $order_id, 'My Field', sanitize_text_field( $_POST['field_name'] ) ); } } /** * Display field value on the order edit page */ add_action( 'woocommerce_admin_order_data_after_billing_address', 'wpse_287663_custom_checkout_field_display_admin_order_meta', 10, 1 ); function wpse_287663_custom_checkout_field_display_admin_order_meta($order){ echo '<p><strong>'.__('My Field').':</strong> ' . get_post_meta( $order->id, 'My Field', true ) . '</p>'; }