WordPress si usermeta meta_key existe ce faire
Je suis sûr que c'est facile pour vous tous, mais c'est tout nouveau pour moi.
Fondamentalement, je veux vérifier que si l'utilisateur connecté a un certain métadonnées attachées à leur profil, certaines choses affichage sur le site.
De l'utilisateur métadonnées sont stockées dans la table wp_usermeta qui contient umeta_id, user_id, meta_key et meta_value. En fait, j'ai besoin de voir si user_id a un meta_key nommée "test".
Je suis conscient de la get_user_meta() la fonction mais je ne peux pas obtenir que cela fonctionne comme je le veux...
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";
}
La théorie de ce code est que je vérifie pour voir si le meta_key 'test' contient un meta_value, si vrai, faire X d'autre n'Y. L'ennui est que tous les utilisateurs disposent d'un meta_key de "test". Par conséquent, si l'utilisateur connecté ne dispose pas de cette méta-clé, le code ne fonctionne pas. D'ailleurs, je ne veux pas de vérifier la valeur réelle de la touche meta (il peut être NULLE pour tout ce que je garde), je veux juste savoir si cette clé existe pour l'utilisateur connecté.
Des idées?
- $havemeta est toujours situé au-dessus de votre instruction si, donc, si l'instruction sera toujours le même résultat, peu importe la valeur. Ne devriez-vous pas utiliser quelque chose comme "if (!empty($havemeta)){"?
Vous devez vous connecter pour publier un commentaire.
$havemeta = get_user_meta( $userID, $field, true ); if ($havemeta === '') { /* do stuff */ }
ou$havemeta = get_user_meta( $userID, $field, false ); if ($havemeta === []) { /*do stuff */ }
(TESTÉ) Si vous mettez
true
comme le dernier argument, selon la documentation, il sera de retour la valeur du champ de métadonnées. Ce qui signifie que vous devez mettrefalse
en dernier argument.Ensuite, comme dit dans l'autre réponse, vous pouvez le vérifier