サポート » 使い方全般 » カスタムフィールドの値で一覧を並び替えたい

  • 解決済 no23h

    (@no23h)


    とある教育機関のサイトを作成しています。
    教員ごとにアカウントを作成し、投稿が可能な状態です。

    ユーザーのプロフィールページにて、
    advanced custom fieldsで以下の項目を追加しています。

    ————————————–
    所属学科 (フィールド名 : users_dep)
    セレクトタイプで所属する学科を選択する。

    職階 (フィールド名 : users_position)
    セレクトタイプで自分の職階を選択する。
    選択肢のバリューとラベルを以下のように設定。
    pos01 : 教授
    pos02 : 准教授
    pos03 : 講師
    pos04 : 助教
    pos05 : 技師
    pos06 : 該当無し
    ※上にいくほど位が高い
    ————————————–

    現状、学科ごとの固定ページを作成し、所属する教員一覧を以下のコードでループ出力させています。

    
      <?php
      $users    = [];
      $usersDep = get_field( 'users_dep' );
    
        if ( $usersDep ) {
          $users = get_users(
            array(
              'meta_key'   => 'users_dep',
              'meta_value' => $usersDep
              'orderby'    => 'ID',
              'order'      => 'ASC',
            )
          );
        }
      ?>
    
      <?php
      if ( $users ) {
        foreach ( $users as $user ) {
          $uid = $user->ID;
      ?>
    
      <div class="author_list">
          <!-- 顔写真の出力 -->
          <?php echo get_avatar( $uid, 300 ); ?>
          <!-- 名前の出力 -->
          <?php echo $user->display_name; ?>
          <?php
            $field = get_field_object('users_position', 'user_' . $uid);
            $value = get_field('users_position', 'user_' . $uid);
            $label = $field['choices'][ $value ];
          ?>
          <!-- 職階の出力 -->
          <?php echo $label; ?>
      </div>
    
      <?php
        }
       } else {
      ?>
      <p>該当する教員はいません。</p>
      <?php } ?>
    

    やりたいこと

    職員一覧を職階の位順に並べたく、以下のコードに変更し、
    順番は希望通りに変更できましたが、
    全学科の固定ページに同じループ内容が表示されてしまいます。

    <?php
      $users    = [];
      $usersDep = get_field( 'users_dep' ); // 学科のバリューを取得
      $usersPos = get_field( 'users_position' ); // 学科のバリューを取得
    
        if ( $usersDep ) { 
          $users = get_users(
            array(
              'meta_key'   => 'users_position',
              'meta_value' => $usersPos,
              'orderby'    => 'meta_value',
              'order'      => 'ASC',
            )
          );
        }
    ?>

    meta_keyとmeta_valueに学科の値を入れないと、学科ページごとに振り分けられないようですが、
    職階の値も入れないと思い通りに並ばないといった状況です。

    お詳しい方、アドバイスをいただけないでしょうか。
    よろしくお願いいたします。

    • このトピックはno23hが3年、 8ヶ月前に変更しました。
    • このトピックはno23hが3年、 8ヶ月前に変更しました。
2件の返信を表示中 - 1 - 2件目 (全2件中)
  • こんにちは

    下記のようなコードでいかがでしょう。

    $users = get_users( array(
    	'meta_key' => 'users_position',
    	'orderby' => 'meta_value',
    	'order' => 'ASC',
    	'meta_query' => array( array(
    		'key' => 'users_dep',
    		'value' => $usersDep,
    		'compare' => '=',
    	) ),
    ) );
    トピック投稿者 no23h

    (@no23h)

    @ishitaka

    希望通りの出力になりました。ありがとうございます。
    ‘meta_query’で検索条件を指定できるということですね。
    大変勉強になりました。
    感謝申し上げます!

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「カスタムフィールドの値で一覧を並び替えたい」には新たに返信することはできません。