16

我在网上商店工作并遵循本教程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;
}

这增加了我的领域。到目前为止,一切都很好。所以我的问题是:

如何在订单视图中查看这个新字段?计费详细信息仅显示通常的计费字段。

4

3 回答 3

16

第一个答案(Cesar)接近正确。如果有人遇到这个旧帖子试图找出相同的东西,下面是在原始海报给出的代码之后插入您的functions.php文件所需的代码,根据他/她提供的变量量身定制。请注意,他们使用字段名称“billing_gls_name”,并且在我们的新函数中将其引用为“_billing_gls_name”。开头的额外“_”是必要的。这适用于运行 WooCommerce 2.0.3 的 Wordpress 3.5.1。

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 );
于 2013-03-21T15:06:01.483 回答
9

在定义您的自定义字段(您在上面提到的代码中所做的)之后,将下面提到的代码添加到:

  1. 处理您的领域

  2. 将其作为 Order 元数据保存在数据库中

  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>';
}
于 2014-09-02T13:22:53.903 回答
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 );
于 2013-01-17T18:03:13.207 回答