从不起作用的用户元提取数据的函数

时间:2014-08-30 作者:Jon C

因此,我试图创建一系列函数,根据我为每个客户设置的客户级别计算价格。一些客户可能有特殊优惠。

为此,我在用户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;

2 个回复
最合适的回答,由SO网友:negletios 整理而成

问题是当你通过$key 上的参数get_user_meta() 函数,则无法传递有效的参数。这个$key 根据documentation page. 它表示meta_keywp_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 (我认为这不是一个好方法)或使用全局变量来获取idglobal $current_user.

SO网友:Benoti

您可以阅读以下内容:get_userdata 以及关于能力的章节。

您需要使用用户全局。您的函数不知道用户id。您可以声明参数($user_id) 或使用global $wp_user.

希望这对你有帮助。

结束

相关推荐

If is_single in functions.php

我希望删除wpautop筛选器仅对我博客中的帖子起作用。因为在某些页面,我需要autop,而在某些页面,我需要它不在那里。我使用以下规则,这是在我的主题函数中。php:remove_filter( \'the_content\', \'wpautop\' ); 因为我只想在博客上看到它,所以我在考虑if语句,我在Wordpress中搜索了条件标记页面,发现我可以使用is\\u single。但它不起作用。这是我现在使用的代码。if(is_single() ){ remove_f