如果usermeta meta_key存在,则Wordpress执行此操作

时间:2012-02-02 06:45:31

标签: mysql wordpress key metadata

我相信这对你们来说都很容易,但这对我来说都是新的。

基本上,我想检查一下,如果登录用户的个人资料附加了某些元数据,网站上会显示某些内容。

用户的元数据存储在wp_usermeta表中,该表包含umeta_id,user_id,meta_key和meta_value。本质上,我需要查看user_id是否有一个名为'test'的meta_key。

我知道get_user_meta()函数,但我不能按照我想要的方式工作......

global $current_user;

get_currentuserinfo(); // wordpress global variable to fetch logged in user info

$userID = $current_user->ID; // logged in user's ID
$havemeta = get_user_meta($userID, 'test', true); // stores the value of logged in user's meta data for 'test'.

if (isset($havemeta)){
    echo $havemeta;
} else {
    echo "No";
}

这段代码的理论是,我检查meta_key'test'是否包含meta_value,如果是,则执行X,否则执行Y.令人烦恼的是并非所有用户都拥有'test'的meta_key。因此,如果登录用户没有此元键,则代码不起作用。此外,我不想检查元键的实际值(对于我所关心的所有内容都可以为NULL),我只想知道登录用户是否存在这样的密钥。

有什么想法吗?

3 个答案:

答案 0 :(得分:3)

if ($havemeta) { echo 'your stuff'; }

答案 1 :(得分:0)

(TESTED)如果你将true作为最后一个参数,根据文档,它将返回元数据字段的值。这意味着您必须将false作为最后一个参数。

$havemeta = get_user_meta($userID, 'test', false);

然后,正如在另一个答案中所说,你可以检查它

if ($havemeta)
    echo $havemeta;
} else {
    echo "No";
}

答案 2 :(得分:0)

WordPress >=3.3

建议的解决方案有一个警告:值为 DeleteDuplicatesFast 的 meta_key 会产生误报。

要询问 WordPress 是否设置了 meta_key,即使值为 false,也请使用 false

metadata_exists