web-dev-qa-db-fra.com

Plusieurs valeurs méta utilisateur dans une clé méta utilisateur

Actuellement, j'ajoute des métadonnées utilisateur avec la clé position_name et une valeur de chaîne représentant la position d'un utilisateur, de sorte que je puisse récupérer la position d'un utilisateur au moyen d'un appel similaire à:

$position = get_user_meta(22, 'position_name', true);

Cela fonctionne parfaitement pour un poste par utilisateur, mais j'aimerais pouvoir associer chaque utilisateur à plusieurs postes. L'ajout d'un tableau sérialisé dans le champ position_name serait-il un moyen approprié d'y parvenir?

J'espère que cela à du sens..

1
dcolumbus

Si vous extrayez la documentation de la fonction update_user_meta() , vous remarquerez que le paramètre $meta_value accepte déjà les objets et les tableaux, de sorte que vous pouvez simplement sauvegarder les positions d'un utilisateur dans un tableau sans effort supplémentaire:

update_user_meta(
    22,
    'position_names',
    array(
        'Khaleesi of the Great Grass Sea',
        'Breaker of Chains',
        'Mother of Dragons'
    )
);

Les méta-fonctions utilisateur s’occupent déjà de la sérialisation et de la désérialisation de la matrice (en la convertissant respectivement en chaîne). Notez que la documentation de get_user_meta() spécifie que le dernier paramètre $single indique s'il faut renvoyer directement une méta-valeur ou renvoyer toutes les valeurs d'un tableau. Vous cherchez à obtenir tous les position_names, vous devriez donc passer false en tant que $single ou omettre entièrement l'argument (auquel cas, la valeur par défaut sera false):

$position_names = get_user_meta( 22, 'position_names' );

//$position_names[0] === 'Khaleesi of the Great Grass Sea'
//$position_names[1] === 'Breaker of Chains'
//$position_names[2] === 'Mother of Dragons'

Remarque

Si vous utilisez ultérieurement update_user_meta() pour stocker un objet (ou un tableau associatif), sachez que vous risquez de rencontrer le problème bug n ° 9640

5
bosco