2015-01-18 2 views
0

Кто-нибудь знает какой-либо код, который я могу добавить в свою тему, чтобы моя форма заказа включала поле для выбора времени доставки? Мой сайт - monpetitfour.comВыбор времени для моей формы заказа WooCommerce

EDIT: Итак, я нашел кодировку, которая работает с точки зрения вывода параметров времени для моих клиентов на выбор, но мне интересно, как я могу получить вариант, который они выбирают для записи на странице «спасибо» woocommerce и заказчику & admin новые электронные письма заказа? Вот код:

<p class="form-row my-field-class form-row-wide woocommerce-validated" 
    id="time_slot_field"> 
<label for="time_slot" class="">Choose a Delivery Time</label> 
<select name="time_slot" id="time_slot" class="select" required="true"> 
<option value="">Select</option> 
<option value="07:00 AM - 07:30 AM">07:00 AM - 07:30 AM</option> 
<option value="07:30 PM - 08:00 AM">07:30 AM - 08:00 AM</option> 
<option value="08:00 AM - 08:30 AM">08:00 AM - 08:30 AM</option>  
....  
</select></p> 
+0

[Checkout Field Editor] (http://www.woothemes.com/products/woocommerce-checkout-field-editor/) включает в себя DatePicker. – helgatheviking

+0

Спасибо, но я пытаюсь отказаться от плагина. – user3696987

+0

Ничего плохого в плагинах, когда они делают именно то, что вам нужно. Но если вы добавите дату в качестве сообщения мета в заказ (заказы являются типом сообщения), а затем вы сможете вспомнить его оттуда. – helgatheviking

ответ

1

Как описано в WooCommerce Customize Checkout Fields вот как создать настраиваемое поле оформления заказа:

// Add a new checkout field 
function kia_filter_checkout_fields($fields){ 
    $fields['extra_fields'] = array(
      'some_field' => array(
       'type' => 'text', 
       'required'  => true, 
       'label' => __('Some field') 
       ) 
      ); 

    return $fields; 
} 
add_filter('woocommerce_checkout_fields', 'kia_filter_checkout_fields'); 

// display the extra field on the checkout form 
function kia_extra_checkout_fields(){ 

    $checkout = WC()->checkout(); ?> 

    <div class="extra-fields"> 
    <h3><?php _e('Additional Fields'); ?></h3> 

    <?php foreach ($checkout->checkout_fields['extra_fields'] as $key => $field) : ?> 

      <?php woocommerce_form_field($key, $field, $checkout->get_value($key)); ?> 

     <?php endforeach; ?> 
    </div> 

<?php } 
add_action('woocommerce_checkout_after_customer_details' ,'kia_extra_checkout_fields'); 

// save the extra field when checkout is processed 
function kia_save_extra_checkout_fields($order_id, $posted){ 
    if(isset($posted['some_field'])) { 
     update_post_meta($order_id, '_some_field', sanitize_text_field($posted['some_field'])); 
    } 
} 
add_action('woocommerce_checkout_update_order_meta', 'kia_save_extra_checkout_fields', 10, 2); 

// display the extra data in the order admin panel 
function kia_display_order_data_in_admin($order){ ?> 
    <div class="order_data_column"> 
     <h4><?php _e('Extra Details', 'woocommerce'); ?></h4> 
     <?php 
      echo '<p><strong>' . __('Some field') . ':</strong>' . get_post_meta($order->id, '_some_field', true) . '</p>'; ?> 
    </div> 
<?php } 
add_action('woocommerce_admin_order_data_after_order_details', 'kia_display_order_data_in_admin'); 
+0

Большое вам спасибо! Это отлично поработало. Я просто сделал несколько настроек, чтобы отобразить его как вариант выпадающего списка. Знаете ли вы, что я сделал бы, чтобы получить итоговое значение поля для отображения на странице thankyou.php woocommerce? Я знаю, что это отображается в сообщениях электронной почты и на моей стороне администратора, но было бы здорово включить его на страницу окончательного заказа/благодарности. – user3696987

+0

Посмотрите на шаблон 'checkout/thankyou.php' и найдите подходящий крючок для использования. 'do_action ('woocommerce_thankyou', $ order-> id);' будет работать в зависимости от того, где именно вы хотите отображать информацию. Затем просто запомните, что крючок передает идентификатор заказа, и ваши данные мета и могут быть получены с помощью 'get_post_meta()'. – helgatheviking

1

я использовал код HelgatheViking с несколькими настройками для опции выпадающей поэтому я просто размещение, что первый раздел коды «// добавить новое поле оформления заказа» здесь, в случае, если кто-то хочет добавить опцию времени доставки их проверки:

// Add a new checkout field 
function kia_filter_checkout_fields($fields){ 
    $fields['extra_fields'] = array(
      'some_field' => array(
       'required'  => true, 
       'label' => __('Delivery Time'), 
       'type'  => 'select', 
       'options'  => array(
       '7:00AM-7:30AM' => __('7:00 AM - 7:30 AM', 'woocommerce'), 
       '7:30AM-8:00AM' => __('7:30 AM - 8:00 AM', 'woocommerce'), 

        .... 

       '5:30PM-6:00PM' => __('5:30 PM - 6:00 PM', 'woocommerce') 

      ) 
       ) 
      ); 

    return $fields; 
} 
add_filter('woocommerce_checkout_fields', 'kia_filter_checkout_fields'); 

(PS) Убедитесь, что вы CHEC k на своем сайте для кода, который необходимо добавить к полученному в результате времени доставки (или значению поля) вашему клиенту & админ новых электронных писем.

UPDATE: Для того, чтобы добавить время доставки на странице сведений о порядке (шаблон thankyou.php), используя весь пример всего кодирования упомянутого здесь, в этой теме, просто добавьте следующий код в файл functions.php вашей темы файл:

add_action('woocommerce_order_details_after_order_table',  'nolo_custom_field_display_cust_order_meta', 10, 1); 

function nolo_custom_field_display_cust_order_meta($order){ 
    echo '<p><strong>'.__('Delivery Time').':</strong> ' .  get_post_meta($order->id, '_some_field', true). '</p>'; 

} 
Смежные вопросы