Подтвердить что ты не робот

Показывать пользовательское поле под заказ в 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;
}

Это добавляет мое поле. Все идет нормально. Поэтому моя проблема:

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

4b9b3361

Ответ 1

Первый ответ (Cesar) был CLOSE правильным. В случае, если кто-либо сталкивается с этим старым сообщением, пытающимся выяснить то же самое, ниже приведен код, необходимый для вставки в ваш файл 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 );

Ответ 2

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

  • Обработать ваше поле

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

  • Отобразите его в разделе "Сведения о заказе" в разделе Woocommerce- > Orders

Обработать ваше поле:

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>';
}

Ответ 3

Добавив действие 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 );