Wordpress, если usermeta meta_key существует, сделайте это - PullRequest
2 голосов
/ 02 февраля 2012

Я уверен, что это легко для всех вас, но для меня это все ново.

По сути, я хочу проверить, что если вошедший в систему пользователь имеет определенные метаданные, прикрепленные к его профилю, определенные вещи отображаются на сайте.

Метаданные пользователя хранятся в таблице wp_usermeta, которая содержит umeta_id, user_id, meta_key и meta_value. По сути, мне нужно посмотреть, есть ли у user_id мета-ключ с именем 'test'.

Мне известна функция 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. Раздражает то, что не у всех пользователей есть meta_key «test». Поэтому, если вошедший в систему пользователь не имеет этого мета-ключа, код не работает. Кроме того, я не хочу проверять фактическое значение мета-ключа (это может быть NULL для всех, кого я забочусь), я просто хочу знать, существует ли такой ключ для вошедшего в систему пользователя.

Есть идеи?

Ответы [ 2 ]

3 голосов
/ 02 февраля 2012
if ($havemeta) { echo 'your stuff'; }
0 голосов
/ 13 ноября 2016

(ИСПЫТАНО) Если вы установите true в качестве последнего аргумента, согласно документации, он вернет значение поля метаданных. Это означает, что вы должны поставить false в качестве последнего аргумента.

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

Тогда, как сказано в другом ответе, вы можете проверить это

if ($havemeta)
    echo $havemeta;
} else {
    echo "No";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...