web-dev-qa-db-fra.com

Comment afficher les noms d'utilisateurs d'un groupe spécifique avec un shortcode?

J'ai dans la base de données une table avec les valeurs user_id et group_id correspondantes, de sorte que chaque ligne contient l'ID de l'utilisateur membre d'un groupe et l'ID du groupe associé. La question est : Comment afficher les noms d'utilisateurs d'un groupe spécifique, ainsi que certaines métadonnées, avec un shortcode, par exemple [group_members group_id=1]? Avec la fonction ci-dessous, que j'essaye d'adapter sans succès, je ne peux afficher que l'ID utilisateur ou l'ID du groupe.

add_shortcode( 'group_members',  'group_members_shortcode_handler' );

function group_members_shortcode_handler ( $atts, $content = null ) {    

  global $wpdb;
  $querystr = "SELECT * FROM wp_groups_user_group";
  $users = $wpdb->get_results($querystr, OBJECT);

  foreach ($users as $user) {
    $output .= $user->group_id;
  }

 return $output;
}
4
Iurie Malai

Ci-dessous ma propre réponse à la question. J'apprécierai tout commentaire constructif.

add_shortcode( 'group_members',  'group_members_shortcode_handler' );

function group_members_shortcode_handler ( $atts, $content = null ) {    

  global $wpdb;
  $querystr = "SELECT * FROM wp_groups_user_group";
  $users = $wpdb->get_results($querystr, OBJECT);

  $output='';
  foreach ($users as $user) {
    if($user->group_id == $atts['group_id']){
      $firstName = esc_html(get_user_meta($user->user_id, 'first_name', true));
      $lastName = esc_html(get_user_meta($user->user_id, 'last_name', true));
      $output .= '<li>' . $firstName . ' ' . $lastName . ' - ' . esc_html(get_user_meta($user->user_id, 'teaching_position', true)) . '</li>' . PHP_EOL;
    }
  }

  return $output;
}
3
Iurie Malai