如何在woocommerce的admin-new-order.php文件中添加自定义字段并显示它


How to add custom field and display it in admin-new-order.php file in woocommerce?

我在WordpressWooCommerce工作,我的客户想在他的客户的"我的帐户"页面下显示一个名为"认证类型"的新字段。

我通过一个插件上传了一个CSV文件,其中有4000个客户,并且在这个插件中有自定义字段(包括"认证类型")被添加到数据库中。

我的客户希望在每次他的一些客户订购某些东西时收到的电子邮件中显示此字段。所以基本上我已经创建了一个子主题,并添加了admin-new-order.php文件。

在这个文件中,我添加了以下代码:
<?php
    global $current_user;
    get_currentuserinfo();
    echo 'Certification Type: ' . $current_user->Certification . "'n";
?>

当我使用我的管理员登录测试代码时,我收到电子邮件,代码工作正常,并向我显示了我在认证类型字段中的值。当我的客户端尝试它时,他收到认证类型:没有显示下订单的客户端的字段。

有人能帮我解决这个问题吗?我不是很擅长php,所以如果我做了一些明显的错误,请提前道歉。

Update:我最近发现我的客户端服务器正在运行Windows NT.这是否与问题有关?我还安装了一个插件来清除缓存,但我仍然得到同样的结果。有人能给我指一下正确的方向吗?我错过了什么?

我认为一个新的用户字段应该被添加到wp_usermeta表而不是wp_users表。您查看get_currentuserinfo();的方式意味着它被添加到users表中。但是如果它被添加到usermeta表中,那么你应该这样做。

<?php echo get_user_meta($user_id, 'Certification', true);  ?>

因此,首先您必须确认哪个表存储认证字段。

1)在wp_users表中还是在wp_usermeta表中为此,您必须登录到您的phpmyadmin或您正在使用的任何数据库软件,然后转到这两个表和搜索随机用户,例如搜索user_id = 57,看看Certification字段是否在users表内或在usermeta表内。

或者使用这样的sql查询来查看随机用户id的所有用户元结果(确保您的db前缀是wp_或将其替换为您的db表名)

global $wpdb;
$results = $wpdb->get_results( 'SELECT * FROM wp_usermeta WHERE user_id = 57', OBJECT );
var_dump($results); die();

这只是为了调试,并将在浏览器中转储user_id 57的所有usermeta。因此,您可以使用chrome搜索搜索"证书"。如果您在这里找到它,则意味着数据存储在usermeta中,您只需要运行此代码即可获得证书。此外,"Certificate"answers"Certificate"之间也有区别,所以请确保您正在询问数据库中的证书。

编辑:这里是使用 的完整代码
<?php
    global $current_user;
    get_currentuserinfo();
    echo 'Certification Type: ' . get_user_meta($current_user->ID, 'Certification', true) . "'n";
?>

由于这不是默认字段之一,我个人将编写一个SQL脚本,为每个客户插入该字段的数据。我假设这个自定义字段的日期存储在user_meta表中,因此这将是我调查的第一个剧本。