WordPressのユーザーに所属情報などを付加できるプラグイン「User Categories」をリリース

リンクにリンクカテゴリーがあるように、ユーザーにもユーザーカテゴリーを作ることも可能なのでは?と思い、ユーザー用にカスタム分類(ユーザーカテゴリー)を適用させるプラグイン「User Categories」を作成してみました。

普通のプラグイン同様、プラグインメニューから User Categories を有効化すると、ユーザーメニューに新しく「ユーザーカテゴリー」というメニューが追加されます。

ユーザーカテゴリーは、カテゴリー同様にカテゴリーで親子関係を持つことが可能で、ツリー構造を持った組織構造を再現することも可能となっています。

ユーザーカテゴリーにカテゴリーを追加すると、「ユーザーの編集」「プロフィール」編集画面に登録したカテゴリーのチェックボックスが追加表示されるので、適宜チェックしユーザー情報の更新ってください。

ユーザーがどのユーザーカテゴリーに属しているかを取得するには、カスタムテンプレートタグの get_the_user_categories を利用してください。引数には、ユーザーのIDを指定します。
プラグインの有効/無効に依存したくなければ、WordPress組み込みの関数 get_the_terms を用いても取得可能です。

ユーザーIDが 1 の所属するユーザーカテゴリーを取得

<?php $user_categories = get_the_user_categories( 1 ); ?>

または

<?php $user_categories = get_the_terms( 1, 'user_category' ); ?>

ユーザーカテゴリーに属するユーザーを取得する場合は、get_users 関数で user_cat_idまたは、user_catパラメータを使って下さい。
user_cat_id はユーザーカテゴリーのID、user_cat はユーザーカテゴリーのスラッグで指定し、どちらもカンマ区切りで複数の指定が可能となっています。

この記事は、jim912によって書かれたものです。
引用を行う場合は、著作権法に定める範囲にて、引用元であるSimple Colorsの出展元表示とhttp://www.warna.info/archives/1793/へのリンクを必ず行って下さい。

ユーザーカテゴリーIDが 12 または 15、およびその子カテゴリーに属するユーザーを取得

<?php $users = get_users( 'user_cat_id=12,15' ); ?>

ユーザーカテゴリーのスラッグが wordbench およびその子カテゴリーに属するユーザーを取得

<?php $users = get_users( 'user_cat=wordbench' ); ?>

get_usersは、wp_list_authors で内部的にユーザーのデータ取得にも利用されているので、試してはいませんが、wp_list_authorsでもこのパラメータを利用することができるのではないかと思います。

Download

User Categories 0.1.1

カテゴリー: WordPressの小技 タグ: , , パーマリンク

WordPressのユーザーに所属情報などを付加できるプラグイン「User Categories」をリリース への6件のフィードバック

  1. 松山 のコメント:

    はじめまして、松山と申します。
    User Categoriesをインストールさせていただきました。
    ユーザーカテゴリを作成したのですが、
    プロフィールには、「ユーザーカテゴリー」欄が表示されるのですが、
    肝心のチェックボックスが表示されません。

    WordPressのバージョンは3.2.1です。

  2. 松山 のコメント:

    たびたびすみません。
    自己解決いたしました。

  3. show555 のコメント:

    こんにちは、いつも役に立つプラグインや参考になるカスタマイズをありがとうございますm(_ _)m

    今回の「User Categories」プラグインにて間違いではないかと思われる記述がありましたので報告させていただきます。(勘違いでしたら申し訳ありません)
    「get_the_user_categories」関数は以下のコードですが

    function get_the_user_categories( $user_id ) {
    return $user_categorize->get_the_user_categories( $user_id );
    }

    インスタンス名の「$user_categorize」は「$user_categories」のタイポではないかと思われます。あとテーマテンプレート上で使う場合スコープの問題でglobalで宣言が必要ではないかと思われます。なので以下のような記述になるかと思います。

    function get_the_user_categories( $user_id ) {
    global $user_categories;
    return $user_categories->get_the_user_categories( $user_id );
    }

  4. jim912 のコメント:

    show555さん、いつもありがとうございます。

    おっしゃるとおりでございます。
    遅まきながら修正して0.1.1にアップデートさせていただきました。

  5. SUSH のコメント:

    こんばんは。まさに必要なプラグインだったので使わせて頂きました。
    ありがとうございます。

    使わせて頂いた中で、幾つか不具合らしき箇所があったので報告させていただきます。

    ○ユーザの削除に対応していない
    ユーザを削除しても、カテゴリーの数が残ったままでした。
    こちらで修正を行った際は、
    add_action( ‘delete_user’, funcstion );
    で呼び出した関数で、
    wp_set_object_terms( $user_id, NULL, ‘user_category’ );
    で対応しています。

    ○allow_user_cat_query内
    $ids = explode( ‘,’, $params );

    $params = explode( ‘,’, $params );
    かと思います。
    また、考え方の違いなのかもしれませんが、管理画面外でも使えるように、
    add_action( ‘pre_user_query’, array( &$this, ‘allow_user_cat_query’ ) );
    はif( is_admin() )の外でも良いのでは?と感じました。

    ○add_user_category_item
    show_password_fieldsでは返り値に引数のBooleanを返さないと、パスワードの入力エリアが消えてしまう様です。
    例)
    function hoge( $bool ) {
    return $bool;
    }
    add_action( ‘show_password_fields’ , ‘hoge’ );

    また、今回必要なかったので修正しなかったのですが、ユーザ追加時には反映されないようです。
    たぶんuser_register辺りをadd_actionで出来るのかな?と思います。

  6. 1tanto のコメント:

    こんにちは、初めてコメントさせて頂きます。

    複数で運営するブログでカテゴリー別(固定ページにて)にユーザーの一覧表示をしたく、このプラグインを利用させてもらいました。便利なプラグインをありがとうございます。

    実は、ユーザーカテゴリーを設定した後、ユーザーを登録しましたが…
    一覧ページにて指定のユーザーカテゴリーに属するユーザーを取得することが出来ませんでした(T_T)
    (そもそもユーザーカテゴリー一覧にてユーザー数がカウントされてないのが原因でしょうか?ちなみにver3.6です。)

    リリース後から日数経っておりますが、何卒ご助言いただければ幸いです。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です