因此,我试图创建一系列函数,根据我为每个客户设置的客户级别计算价格。一些客户可能有特殊优惠。
为此,我在用户meta中创建了一个自定义meta字段,允许我为该客户机分配High、medium或low。
然后,我创建了一个函数,用于确定客户端级别,并将其用于价格计算。
如果客户端未登录,或字段为空,则默认设置为高
我尝试了该函数的两个版本,并将其放入一个插件中,用一个简单的echo语句进行测试,但这两个版本似乎都没有将结果更改为除high之外的任何内容,尽管meta字段设置为low。
如果你能帮我找出我错过了什么,那就太好了。第一次尝试:
function get_client_lvl () {
$user_id = get_current_user_id();
If ($user_id == 0) {
return \'high\';
} Else {
$client_lvl= get_user_meta($user_id, wpcf-client-lvl, true);
if (empty($client_lvl)) {
return \'high\';
} Else {
return $client_lvl;
}
}
}
$client_lvl=get_client_lvl();
echo $client_lvl;
第二次尝试
function get_client_lvl () {
$user_id = get_current_user_id();
$client_lvl= get_user_meta($user_id, wpcf-client-lvl, true);
If ($user_id == 0 || empty($client_lvl)) {
return \'high\';
} Else {
return $client_lvl;
}
}
$client_lvl=get_client_lvl();
echo $client_lvl;
最合适的回答,由SO网友:negletios 整理而成
问题是当你通过$key
上的参数get_user_meta()
函数,则无法传递有效的参数。这个$key
根据documentation page. 它表示meta_key
在wp_usermeta
桌子
如果with wpcf client lvl实际上是一个包含字段名称的变量(比如$wpcf-client-lvl = \'client_level\'
) 代替\'wpcf-client-lvl\'
具有$wpcf-client-lvl
. 我猜这是真的meta_key
名称
如果您不介意的话,我还更改了一些语法代码:)
因此,我相信您可以复制/粘贴以下代码,它会起作用:
function get_client_lvl(){
$global $current_user;
get_currentuserinfo();
$user_id = $current_user->ID;
if ($user_id == 0)
return \'high\';
else {
$client_lvl= get_user_meta($user_id, \'wpcf-client-lvl\', true);
if (empty($client_lvl))
return \'high\';
else
return $client_lvl;
}
}
$client_lvl = get_client_lvl();
echo $client_lvl;
UPDATE
为了
get_current_user_id()
要返回ID,您必须包括
pluggable.php (我认为这不是一个好方法)或使用全局变量来获取id
global $current_user
.