web-dev-qa-db-fra.com

Sélectionnez Multiple meta_value dans WP DB; Requête unique

J'essaie de récupérer le nom et le prénom de chaque utilisateur, son numéro de téléphone, son adresse électronique et son adresse depuis la table usermeta. Je ne parviens pas à sélectionner plusieurs méta_valeurs, chacune avec sa propre méta_key, à l'aide d'une seule requête SQL.

Je voudrais que les données retournées comme

Prénom, Nom, Téléphone, Adresse, Email, Prénom, Nom, Téléphone, Adresse, Email, Prénom, Nom, Téléphone, Adresse, Email, Prénom, Nom, Téléphone, Adresse, Email

J'ai accès à la base de données via phpMyAdmin, je voudrais donc obtenir de l'aide pour la requête mySql.

1

Vous pouvez simplement appeler get_user_meta sans spécifier de clé, et toutes les valeurs MetaValues ​​seront renvoyées pour l'utilisateur.

$userdata = get_user_meta( $userID );

Vous devrez peut-être effectuer un mappage pour les titres d'affichage de la métavaleur, car ils sont renvoyés dans une array, où keys sont les valeurs de base de données de votre metakeys.

Par exemple, vous pouvez obtenir

$userdata['f711_email_first_name']

Si vous souhaitez afficher tous ces éléments dans un tableau, créez une array comme ceci:

$displaytitles = array(
    'f711_email_first_name' => 'Email first name',
    ...
);

Lorsque vous parcourez $userdata, vous pouvez le sortir comme ceci:

foreach ( $userdata as $thisdata => $value ) {
    echo $displaytitles[$thisdata] . ': ' . $value[0];
}
3
fischi

Si j'étais à votre place, j'utiliserais get_user_meta() .

// get the users -- I'm ordering them by their username
$args = array( 
    'orderby' => 'login',
    'order' => 'ASC',
);
$users = get_users( $args );
foreach( $users as $user ) {
    $user_meta = get_user_meta( $user->ID );
    var_dump( $user_meta ); // to show you what you've got
}

Ceci est un exemple très simpliste ; dans la vie réelle, vous voudrez probablement parcourir le tableau que get_user_meta() renvoie, et afficher les choses beaucoup plus facilement que var_dump().

Références

1
Pat J