Je stocke en utilisant les valeurs personnalisées add_user_meta qui sont envoyées à la page d'accueil du site. Voici le code php.
$user_query = new WP_User_Query( array(
'fields' => 'ID'
) );
$user_ids = $user_query->get_results();
foreach( $user_object->_custom_link as $user_id ) {
$user_object = get_userdata( $user_ids );
echo '<li class="quick-link custom"><img src="http://compass/wp-content/uploads/2015/12/add-icon.png" /><h2><a href="'.$user_object->_custom_link.'">Custom Link</a></h2></li>';
}
Lorsque tout est généré, une seule méta-valeur est renvoyée, mais plusieurs valeurs peuvent être stockées.
Ma question est, en ce moment, mes boucles vérifient uniquement les identifiants. Je ne suis pas tout à fait sûr de savoir comment les vérifier, puis vérifie le nombre de méta_keys de _custom_link.
Cela montre qu'une seule méta_key est retournée. De plus, si vous avez une meilleure méthode, cela serait grandement apprécié.
Voici un exemple d'obtention des ID utilisateur, en les parcourant, en saisissant une méta_key en tant que tableau, en lui ajoutant de nouvelles valeurs et en supprimant les anciennes valeurs, en sauvegardant la méta, puis en la récupérant pour parcourir en boucle chaque élément du tableau. . Array est juste un exemple de clés dupliquées.
$user_query = new WP_User_Query( array( 'fields' => 'ID' ));
$user_ids = $user_query->get_results();
echo "<ul>";
foreach ( $user_ids as $user_id ) {
// all meta for user
$all_meta_for_user = array_map( function( $a ){ return $a[0]; }, get_user_meta( $user_id ) );
echo "<pre>";
print_r ( $all_meta_for_user ); // see all the values
echo "</pre>";
$key = '__TEST_KEY';
$value_set = array();
if( isset( $all_meta_for_user [ $key ] )) {
$value_set = get_user_meta ( $user_id, $key, true );
if( ! is_array( $value_set )) $value_set = array(); // make sure we're working with an array
}
// add to existing values
$value_set[] = timer_stop(4);
// remove old items
if( count ($value_set) > 4 ) array_shift ($value_set);
// set the meta
update_user_meta($user_id, $key, $value_set );
// LATEST VALUES
$value_set = get_user_meta ( $user_id, $key, true );
echo "<pre>";
print_r ( $value_set ); // the value set currently in our meta
echo "</pre>";
foreach ( $value_set as $inx => $value ){
echo "<li>{$user_id} - {$key} - {$inx} - {$value}</li>";
}
echo "</ul>";
}
echo "</ul>";
Je cherchais depuis longtemps une solution à ce type de requête dans wp_usermeta et maintenant je peux trier les valeurs pour chaque utilisateur enregistré créant une requête et utilisant un LEFT JOIN en utilisant la classe wpdb, je sais que cet article est un peu désuet mais je me suis senti obligé de partager mon script parce que votre message me fait persister jusqu'à ce que je trouve une solution, j'espère que cela peut aider.
<?php
$sql_query =<<<SQL
SELECT
{$wpdb->users}.user_email,
{$wpdb->users}.user_nicename,
{$wpdb->usermeta}.meta_value
FROM
{$wpdb->users}
LEFT JOIN {$wpdb->usermeta} ON {$wpdb->users}.ID = {$wpdb->usermeta}.user_id
WHERE 1=1
AND {$wpdb->users}.user_status = '0'
AND {$wpdb->usermeta}.meta_key = 'ma_deposito'
/* AND {$wpdb->usermeta}.meta_value = '50'// busca meta_value pelo valor*/
SQL;
$users = $wpdb->get_results($sql_query);
//header('Content-type:text/plain');
// print_r($usersemails);
foreach ( $users as $indce => $valor ) :
echo 'Apelido: '. $valor->user_nicename . ' - E-mail: '. $valor->user_email. ' - Valor: '. $valor->meta_value.'<br />';
endforeach;
?>