我有“你是如何发现我们的?”结帐期间获得的信息将包含在 WooCommerce 管理订单页面的自定义信息列中。
我在编辑订单页面中显示了相同的详细信息。
但是,它不会返回管理订单中新信息列中的您如何发现我们? 值。它仍然是空的。
怎样才能让它正确显示?
//Checkout Section
add_filter('woocommerce_checkout_fields', function($fields) {
$fields['billing']['billing_my_custom_select'] = [
'label' => __('How Did You Discover Us?', 'textdomain'),
'required' => true,
'type' => 'select',
'options' => [
'' => __('Select Source', 'textdomain'),
'X' => __('X', 'textdomain'),
'Y' => __('Y', 'textdomain') ],
'class' => ['form-row-wide'],
'priority' => 110
];
return $fields;
});
//Admin Note Section
add_action('woocommerce_admin_order_data_after_billing_address', function($order) {
$my_value = get_post_meta($order->id, '_billing_my_custom_select', true);
if (!empty($my_value)) {
echo '<p><strong>' . __('How Did You Discover Us?', 'textdomain') . ':</strong> ' . $my_value . '</p>';
}
});
//End How Did You Discover Us
//Edit Admin Orders Page, New Column
add_filter('manage_edit-shop_order_columns', 'add_order_new_column_header', 20);
function add_order_new_column_header($columns){
$new_columns = array();
foreach ($columns as $column_name => $column_info){
$new_columns[$column_name] = $column_info;
if ('order_total' === $column_name) {
$new_columns['order_details'] = __('Info', 'textdomain');
}
}
return $new_columns;
}
add_action('manage_shop_order_posts_custom_column', 'add_wc_order_admin_list_column_content');
function add_wc_order_admin_list_column_content($column){
global $post;
if ('order_details' === $column){
$order = wc_get_order( $post->ID, '_billing_my_custom_select', 1);
echo $my_value;
}
}
//End Edit Admin Orders Page, New Column
您的代码自 WooCommerce 3 以来有点过时,并且存在一些错误。
此外,您应该始终使用显式元键并始终命名挂钩函数。
尝试以下代码替换:
// Add custom Checkout billing field
add_filter('woocommerce_checkout_fields', 'add_custom_checkout_field' );
function add_custom_checkout_field($fields) {
$fields['billing']['billing_discover_us'] = [
'label' => __('How Did You Discover Us?', 'textdomain'),
'required' => true,
'type' => 'select',
'options' => [
'' => __('Select Source', 'textdomain'),
'X' => __('X', 'textdomain'),
'Y' => __('Y', 'textdomain') ],
'class' => ['form-row-wide'],
'priority' => 110
];
return $fields;
}
// Display Admin order custom Checkout billing field value
add_action('woocommerce_admin_order_data_after_billing_address', 'display_admin_order_custom_field_value' );
function display_admin_order_custom_field_value( $order ) {
if ( $value = $order->get_meta('_billing_discover_us') ) {
echo '<p><strong>' . __('How Did You Discover Us?', 'textdomain') . ':</strong> ' . $value . '</p>';
}
}
// Admin Orders list: New Column
add_filter( 'manage_edit-shop_order_columns', 'add_order_new_column_header', 20 );
function add_order_new_column_header( $columns ){
$new_columns = array();
foreach ($columns as $column_name => $column_info){
$new_columns[$column_name] = $column_info;
if ( 'order_total' === $column_name ) {
$new_columns['order_details'] = __('Info', 'textdomain');
}
}
return $new_columns;
}
// Admin Orders list: New Column content
add_action( 'manage_shop_order_posts_custom_column', 'add_wc_order_admin_list_column_content', 20 );
function add_wc_order_admin_list_column_content( $column ){
if ( 'order_details' === $column ){
global $the_order;
echo $the_order->get_meta('_billing_discover_us');
}
}
代码位于子主题的functions.php 文件中(或插件中)。已测试并有效。
注意: 由于我已重命名您的自定义字段元键,您需要下订单才能看到更改。
你会得到类似的东西: