Показать настраиваемое поле по заказу в woocommerce

Я работаю в интернет-магазине и следую этому руководству http://wcdocs.woothemes.com/snippets/tutorial-customising-checkout-fields-using-hooks-and-filters/, чтобы добавить некоторые пользовательские поля к моему счету.

// Hook in
add_filter( 'woocommerce_checkout_fields' , 'custom_override_checkout_fields' );

// Our hooked in function - $fields is passed via the filter!
function custom_override_checkout_fields( $fields ) {
 $fields['billing']['billing_gls_name'] = array(
    'label'     => __('Name for pickup person', 'woocommerce'),
'placeholder'   => _x('Name', 'placeholder', 'woocommerce'),
'required'  => true,
'class'     => array('form-row-wide'),
'clear'     => true
 );

 return $fields;
}

Это добавляет мое поле. Все идет нормально. Итак, моя проблема:

Как я могу просмотреть это новое поле в режиме просмотра заказов? В деталях для выставления счетов отображаются только обычные поля для выставления счетов.


person Jepzen    schedule 18.10.2012    source источник
comment
Разве это не отображается в метабоксе Custom Fields? Это подходит для моего настраиваемого поля. (NB: возможно, у вас есть скрытые настраиваемые поля, возможно, вам придется их показать: youtube.com/watch ? v = msUjikwkEAw)   -  person webaware    schedule 09.12.2012
comment
У меня есть этот интерфейс ниже, но я не знаю, как он работал. В любом случае я закончил тем, что заполнил поля адреса доставки, и они все равно были показаны в административной части, так что все сработало   -  person Jepzen    schedule 12.12.2012
comment
Взгляните на мой учебник по настройке кассы woocommerce   -  person helgatheviking    schedule 11.07.2015


Ответы (3)


Первый ответ (Сезар) был БЛИЖАЙШИМ к правильному. На случай, если кто-нибудь когда-нибудь наткнется на этот старый пост, пытающийся выяснить то же самое, ниже приведен код, необходимый для вставки в ваш файл functions.php после кода, предоставленного исходным постером, с учетом его / ее переменных, как указано. Обратите внимание, что они используют имя поля «billing_gls_name», и что в нашей новой функции оно обозначено как «_billing_gls_name». Дополнительный "_" в начале необходим. Это работает в Wordpress 3.5.1 под управлением WooCommerce 2.0.3.

function your_custom_field_function_name($order){
    echo "<p><strong>Name of pickup person:</strong> " . $order->order_custom_fields['_billing_gls_name'][0] . "</p>";
}

add_action( 'woocommerce_admin_order_data_after_billing_address', 'your_custom_field_function_name', 10, 1 );
person Warren G    schedule 21.03.2013

После определения вашего настраиваемого поля (которое вы сделали в коде, упомянутом выше), добавьте указанный ниже код в:

  1. Обработайте свое поле

  2. Сохраните его в базе данных как метаданные заказа.

  3. Отобразите его в разделе «Сведения о заказе» в разделе Woocommerce-> Заказы.

Обработайте свое поле:

add_action('woocommerce_checkout_process', 'my_custom_checkout_field_process');

function my_custom_checkout_field_process() {

if (!$_POST['billing']['billing_gls_name']) {
    wc_add_notice(__('Please tell us the Location Type that we are billing to.'), 'error');
}

}

Сохранить поле в БД как метаданные заказа:

add_action('woocommerce_checkout_update_order_meta','my_custom_checkout_field_update_order_meta');

function my_custom_checkout_field_update_order_meta($order_id) {

  if (!empty($_POST['billing']['billing_gls_name'])) {
     update_post_meta($order_id, 'Billing Gls Name', esc_attr($_POST['billing']['billing_gls_name_type']));
     }
 }

И, наконец, отобразите его на экране сведений о заказе:

  add_action('woocommerce_admin_order_data_after_billing_address', 'my_custom_billing_fields_display_admin_order_meta', 10, 1);

  function my_custom_billing_fields_display_admin_order_meta($order) {
echo '<p><strong>' . __('Billing Gls Name') . ':</strong><br> ' . get_post_meta($order->id, '_billing_gls_name', true) . '</p>';
}
person Nadeem Khan    schedule 02.09.2014
comment
Спасибо за примеры @ nk-47. Я думаю, вам не хватает апострофа перед my_custom_checkout_field_update_order_meta в примере БД. - person DeFeNdog; 03.12.2014

Добавив действие woocommerce_admin_order_data_after_billing_address, вы можете вставить некоторые данные после платежной информации. Настраиваемые поля находятся в массиве $order->order_custom_fields.

function display_rfc_in_order_metabox($order){
    echo "<p><strong>RFC:</strong> {$order->order_custom_fields['_billing_rfc'][0]}</p>";
}

add_action( 'woocommerce_admin_order_data_after_billing_address', 'rxm_details_to_order', 10, 1 );
person César    schedule 17.01.2013