我的问题是"你是怎么发现我们的?"在 checkout 过程中获得的信息将包括在WooCommerce的管理订单页面内的我的自定义信息列中.

我有相同的细节显示在编辑订单页面.

然而,它不会在管理订单的新信息列中返回How Did You Discover Us?值.它仍然是空的.

我怎样才能正确地显示它?

//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以来,你的代码有点过时了,而且有一些错误.

此外,您应该始终使用显式元键,并始终命名挂钩函数.

try 以下代码替换:

// 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文件中(或插件中).测试和作品.

Note:由于我已经重命名了您的自定义字段Meta密钥,您需要下订单才能看到更改.

您将得到如下内容:

enter image description here

相关:How to get WooCommerce order details

Php相关问答推荐

Woocommerce自定义变体html表仅显示带值的列

在WooCommerce中的本地收件发货方式下添加一个 Select 字段

WordPress插件和JSON不是有效的响应错误

服务器迁移后无法上载文件-可能存在权限问题

如何按类别过滤自定义帖子类型

在php中,方法之间的属性链接是如何工作的

为WooCommerce中存储一些数据的购物车项目添加复选框

可以';exec、system和shell_exec PHP函数中的命令字符串上的字符数不得超过8175

隐藏WooCommerce管理子菜单;主页;来自store 经理

根据WooCommerce的定制订单状态增加产品库存

laravel Eloquent 模型的问题

为什么从一个页面到另一个页面都找不到 JQuery,因为它们使用相同的 twig 模板?

VS Code 对 PHP 上从父类继承的方法报告误报

PHP 中的 libgd 无法读取 Apache 配置中的 SetEnv GDFONTPATH

将 WooCommerce 0 销售价格替换为自定义文本,并保留常规价格删除线

CodeIgniter 4中嵌套过滤器组不起作用

Php 的新WeakMap - 枚举曾经被垃圾收集过吗?

在全局安装 Composer 包后运行命令

Laravel 响应 html 默认页面忽略控制器

PHP 从 API 获取随机项目