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



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

基本上,我想检查一下,如果登录的用户在他们的个人资料中附加了特定的元数据,那么某些东西会显示在网站上。

用户的元数据存储在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,如果为true,X则执行Y。令人烦恼的是,并非所有用户都有"test"的meta_key。因此,如果登录的用户没有这个元密钥,代码就无法运行。此外,我不想检查元密钥的实际值(我所关心的都可以是NULL),我只想知道登录用户是否存在这样的密钥。

有什么想法吗?

Wordpress>3.3

所提出的解决方案有一个警告:值为false的meta_key将给出假阴性。

要询问WordPress是否设置了元密钥,即使值是false,也可以使用metadata_exists:

if ( metadata_exists( 'user', $user_id, $meta_key ) ) {
   ...
}
if ($havemeta) { echo 'your stuff'; }

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

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

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

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

最新更新