web-dev-qa-db-ja.com

特定のグループのユーザーの名前をショートコードで表示する方法

データベースにはuser_idと対応するgroup_idの値を持つテーブルがあるので、各行にはグループのメンバーであるユーザーのIDと関連するグループIDが含まれます。 問題は :特定のグループのユーザーの名前とメタデータをショートコード付きで表示する方法([group_members group_id=1]など)です。ベローズ機能で、うまくいかなくてもこれに適応しようとすると、ユーザーIDまたはグループIDのみを表示することができます。

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

以下が私の質問に対する答えです。建設的なコメントをいただければ幸いです。

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