サポート » 使い方全般 » ユーザフィールドで同じ値を持つユーザの数を取得

  • 解決済 kleza

    (@kleza)


    いつも大変お世話になっております。

    ユーザ情報にプラグイン「Types」でカスタムユーザフィールドを
    追加しているのですが、指定したフィールドで同じ値を持つ
    ユーザの件数を取得することは可能でしょうか。

    具体的にはユーザフィールドに段位(武道等の)を持たせており
    現在どの段位が何名存在するというふうに、ユーザ登録した
    ユーザの段位ごとの人数を出力したいのですが。

    author.phpで各ユーザの段位は以下の記述で
    出力しています。(gradeがカスタムフィールドのスラッグ)

    echo '<li>【段位】' . types_render_usermeta_field("grade", array("user_id" => $author)) . '</li>';

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • プラグインTypesの下記リンク先ページに
    http://wp-types.com/documentation/user-guides/displaying-wordpress-user-fields/
    Displaying User Fields With Types API という章があって次のように書かれていました。

    Types stores user fields in the standard usermeta table. You can display them with the low-level WordPress API, but using the Types API is recommended.

    つまりWordPressのusermetaテーブルに段位のデータが入っている筈ですから、まず「段位には何と何があるか」を知るには、usermetaテーブルを検索すれば良いと思います。
    具体的な検索方法は、このフォーラムをキーワード「usermeta」で探すと幾つか出てきます。(このコメントにリンクを2つ以上書くとスパム判定されてしまうそうなので、リンクを書けないのです。)

    次に、WordPressの関数 get_users を使って、段位がこれ(usermetaテーブルに段位があって、その値がこれ)という検索を行えば良さそうです。get_users関数の説明は、日本語Codexにはありませんが英語の方にはありますのでご覧になってみて下さい。

    トピック投稿者 kleza

    (@kleza)

    ghvst様

    アドバイスありがとうございます。

    参照URLも読んで、やってみます。
    結果についてもまたコメントさせていただきます。
    (ですので、まだオープン状態にしておきます)

    トピック投稿者 kleza

    (@kleza)

    ghvst様

    アドバイスありがとうございました。

    get_users()関数を使って指定したmeta_keyとmeta_valueでループ、そのループの回数で指定した段位のカウントを出力することにしました。もっとスマートなやり方がありそうな気がしますが、ひとまずこれで目的は叶えられそうです。ありがとうございました。

    以下、お恥ずかしい内容ですが、一応のせておきます。

    <table>
    	<tr><th>初段</th><td>
    	<?php
    		$grade = get_users('meta_key=wpcf-grade&meta_value=1'); // カスタムフィールドのスラッグと値を指定
    		$i = 0;
    		foreach ($grade as $user) {
    			$i++;
    		};
    		echo $i;
    	?>
    	</td></tr>
    	<tr><th>二段</th><td>
    	<?php
    		$grade = get_users('meta_key=wpcf-grade&meta_value=2'); // カスタムフィールドのスラッグと値を指定
    		$i = 0;
    		foreach ($grade as $user) {
    			$i++;
    		};
    		echo $i;
    	?>
    </td></tr>

    get_users関数の返り値は配列型なので、phpのcount関数を使って数えられます。下記リンク先が参考になります。
    http://www.php.net/manual/ja/function.count.php

    トピック投稿者 kleza

    (@kleza)

    ghvstさん、フォローありがとうございます。
    count関数、やってみました。ちょっとスッキリした気がします。
    勉強になりました。本当にありがとうございました。

    <table>
    <tr><th>初段</th><td>
    <?php
    	$grade = get_users('meta_key=wpcf-grade&meta_value=1'); // カスタムフィールドのスラッグと値を指定
    	$result = count($grade);
    	echo $result;
    ?>
    </td></tr>
    <tr><th>二段</th><td>
    <?php
    	$grade = get_users('meta_key=wpcf-grade&meta_value=2'); // カスタムフィールドのスラッグと値を指定
    	$result = count($grade);
    	echo $result;
    ?>
    </td></tr>
5件の返信を表示中 - 1 - 5件目 (全5件中)
  • トピック「ユーザフィールドで同じ値を持つユーザの数を取得」には新たに返信することはできません。