ユーザー一覧を50音順に見出しつきで表示
-
ユーザー一覧を50音順に表示することはできたのですが、人数が多いのでもうちょっと気が利いた表示にしたいと思い、記事を50音順に見出し付きで表示させているソースを参考にユーザーでもできるのではないかと試しているのですが上手く表示されません…
参考にしたソース
投稿したタイトルを五十音順に並び替えるユーザーのよみがなはmeta_key ”yomi”でひらがなで入力しています。
もし分かる方がいらっしゃいましたらよろしくお願いします。
<!--投稿者一覧を50音順にタブを付けて表示--> <?php //目次(行) $indexes_parents = array( "あ行" => "[ア-オ]", "か行" => "[カ-コ]", "さ行" => "[サ-ソ]", "た行" => "[タ-ト]", "な行" => "[ナ-ノ]", "は行" => "[ハ-ホ]", "ま行" => "[マ-モ]", "や行" => "[ヤ-ヨ]", "ら行" => "[ラ-ロ]", "わ行" => "[ワ-ン]", "その他" => ".*" ); // 目次(五十音順) $indexes = array( "ア" => "[ア]", "イ" => "[イ]", "ウ" => "[ウ]", "エ" => "[エ]", "オ" => "[オ]", "カ" => "[カ]", "キ" => "[キ]", "ク" => "[ク]", "ケ" => "[ケ]", "コ" => "[コ]", "サ" => "[サ]", "シ" => "[シ]", "ス" => "[ス]", "セ" => "[セ]", "ソ" => "[ソ]", "タ" => "[タ]", "チ" => "[チ]", "ツ" => "[ツ]", "テ" => "[テ]", "ト" => "[ト]", "ナ" => "[ナ]", "ニ" => "[ニ]", "ヌ" => "[ヌ]", "ネ" => "[ネ]", "ノ" => "[ノ]", "ハ" => "[ハ]", "ヒ" => "[ヒ]", "フ" => "[フ]", "ヘ" => "[ヘ]", "ホ" => "[ホ]", "マ" => "[マ]", "ミ" => "[ミ]", "ム" => "[ム]", "メ" => "[メ]", "モ" => "[モ]", "ヤ" => "[ヤ]", "ユ" => "[ユ]", "ヨ" => "[ヨ]", "ラ" => "[ラ]", "リ" => "[リ]", "ル" => "[ル]", "レ" => "[レ]", "ロ" => "[ロ]", "ワ" => "[ワ]", "ン" => "[ン]", "その他" => ".*" ); // ユーザーの取得条件 $args = array( 'exclude' => array( 1 ),// adminを除外 'orderby' => 'meta_value', 'meta_key' => 'yomi', 'order' => 'ASC', ); $my_users = get_users($args); $user_data_set = array(); if ($my_users) { foreach( $users as $user ): $uid = $user->ID; $userData = get_userdata($uid); // ヨミガナの1文字目を取得する(濁点、半濁点は分離) $yomi = get_user_meta($uid, 'yomi', true); // カスタムフィールドyomiの値を取得 $yomi_conv = mb_convert_yomi($yomi, 'h', 'UTF-8'); //全角ひらがなを半角カタカナに変換 ※ここで濁点、半濁点を分離する $yomi_conv = mb_convert_yomi($yomi_conv, 'K', 'UTF-8');//半角カタカナを全角カタカナに変換 $yomi_first = mb_substr($yomi, 0, 1); // 先頭の1文字を取得 endforeach; } // 目次(五十音順)ごとにユーザーのデータを格納する $user_data_set_index = array(); foreach ( $user_data_set as $key => $val) { $char = mb_substr( $val['yomi_first'], 0, 1); foreach ( $indexes as $index => $pattern ) { if (preg_match("/^" . $pattern . "/u", $char)) { $user_data_set_index[$index][] = $user_data_set[$key]; break; } } } //目次(行)ごとにユーザーのデータを格納する $user_data_set_index_parent = array(); foreach ( $user_data_set_index as $key => $val) { foreach ( $indexes_parents as $indexes_parent => $patterns ) { if (preg_match("/^" . $patterns . "/u", $key)) { $user_data_set_index_parent[$indexes_parent][$key] = $user_data_set_index[$key]; break; } } } ?> <!--ここから出力!--> <div class="js-tab"> <?php if ($user_data_set_index_parent):?> <ul class="js-tab-title"> <?php foreach ($user_data_set_index_parent as $indexes_parent => $users): $x++; $x = sprintf("%02d",$x); ?> <li><a href="#anc-tab<?php echo $x; ?>"><h2><?php echo $indexes_parent; ?></h2></a></li> <?php endforeach; ?> </ul> <div class="js-tab-content"> <?php foreach ($user_data_set_index_parent as $indexes_parent => $users): $i++; $i = sprintf("%02d",$i); ?> <div class="az_list" id="anc-tab<?php echo $i; ?>"> <?php foreach ($users as $index => $user): ?> <h3><?php echo $index; ?></h3> <ul> <?php foreach ($user as $key => $val) { ?> <li><?php echo '<a href="'.get_bloginfo(url).'/profile/'.$user->user_nicename.'">'.$user->display_name.'</a>'; ?></li> <?php } ?> </ul> <?php endforeach; ?> </div><!-- .az_list --> <?php endforeach; ?> </div><!-- .js-tab-content --> <?php endif;wp_reset_userdata(); ?> </div><!-- .js-tab --> <!--出力ここまで-->
6件の返信を表示中 - 1 - 6件目 (全6件中)
6件の返信を表示中 - 1 - 6件目 (全6件中)
- トピック「ユーザー一覧を50音順に見出しつきで表示」には新たに返信することはできません。