データベースには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;
}
以下が私の質問に対する答えです。建設的なコメントをいただければ幸いです。
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;
}