我使用 WooCommerce 在 Wordpress 中工作,我的客户希望在其客户的“我的帐户”页面下显示一个名为“认证类型”的新字段。
我已通过插件上传了一个包含4000名客户的CSV文件,并且在此插件中有自定义字段(包括“认证类型”)已添加到数据库中。
我的客户希望在每次客户订购某些东西时收到的电子邮件中显示此字段。所以基本上我创建了一个子主题并添加了admin-new-order.php文件。
在此文件中,我添加了以下代码:
<?php
global $current_user;
get_currentuserinfo();
echo 'Certification Type: ' . $current_user->Certification . "\n";
?>
当我使用管理员登录测试代码时,我收到了电子邮件,代码工作正常,并向我显示了我在“认证类型”字段中的值。当我的客户尝试了它时,他收到了认证类型:没有显示订单的客户字段中的内容。
有人可以帮我解决这个问题吗? 如果我做了一些明显错误的事情,我对php不是很好,所以提前对不起。
更新:我最近发现我的客户端服务器正在运行Windows NT。这是否必须对此问题采取任何措施?我还安装了一个清除缓存的插件,但我仍然得到相同的结果。有人可以指点我这里正确的方向吗?我错过了什么?
答案 0 :(得分:3)
我认为应该在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();
这仅用于debuging,并将在浏览器中转储user_id 57的所有usermeta。因此,您可以使用chrome搜索来搜索&#34; Certificate&#34;。如果你在这里找到它,那么这意味着数据存储在usermeta中,你只需要运行这段代码来获得证书。另外,&#34;证书&#34;之间存在差异。和&#34;证书&#34;,所以请确保您要求数据库中的那个。
编辑:以下是完整的代码
<?php
global $current_user;
get_currentuserinfo();
echo 'Certification Type: ' . get_user_meta($current_user->ID, 'Certification', true) . "\n";
?>
答案 1 :(得分:1)
由于这不是默认字段之一,我个人会编写一个SQL脚本,为每个客户插入此字段的数据。我假设这个自定义字段的日期存储在user_meta表中,这将是我调查的第一个游戏。