BpProfileWidget ITかあさん

ITかあさん

BpProfileWidget

BuddyPressでサブカテゴリーまでユーザーを分類するプラグインを作ってみた

冬休みの自分の課題として、BuddyPressのユーザーカテゴリー分けをするプラグインを作ることが目標だったんですが、課題はあるものの作ってみましたので、ご報告。
一先ずGithub上に公開しました。近日中に公式にも登録出来るようにしたいと思います。

参考にしたサイト

ウィジェットを利用したプラグインの開発についてはこちらの記事を参考にさせて頂きました。分かり易くて助かりました!ありがとうございます。

このプラグインで出来ること


このプラグインはBuddyPressで使うことが出来ます。ソレ以外では全く意味がありません。
サイドバーにウィジェットとしてユーザーのカテゴリーを表示することが出来ます。
プロフィールグループ欄と、プロフィール項目をうまく組み合わせることでサブカテゴリーまで表示させることが出来ます。

カスタムプロフィールで指定した一つの項目を、ウィジェットとして表示させることが出来ます。1ウィジェットにつき一つの項目をウィジェットに表示させることが可能なので、複数の項目を表示したい場合はこのプラグインでのウィジェットを複数設置して下さい。
親項目の存在するプロフィール項目
プロフィールのグループ欄を使って親カテゴリーとして表示し、グループ欄と同じ名称のカスタムプロフィールがサブカテゴリーまで表示させることが出来ます。(少し分かりにくいかもしれないので使い方ガイドをよく読んでください)

このプラグインを作った目的

BuddyPressにはプロフィール項目で「検索する」プラグインはあるもののサイドバーにカテゴリーとして表示する機能がありません。方法としてはカスタムプロフィールをSQLで呼び出すしかありません。さらにWordPressの投稿記事のカテゴリー分けのように、サブカテゴリーまでに分類する方法はありません。そこで今回このプラグインを作りました。

使い方

ダウンロードと有効化

まずはダウンロードして(GitthubのURL)有効にします。

ウィジェットに表示したいプロフィール項目名を記載

外観>ウィジェット>BP Profile Category
BP Profile Categoryをドラッグ&ドロップで任意の場所に設置して下さい。もちろん複数設置してもかまいません。Parentに表示させたいプロフィール項目名を記載して下さい。
ウィジェットに設置された BP Profile Category

記載したプロフィールの項目名と同じプロフィール作成

先ほどのParentに記載した同じプロフィールの項目名と同じプロフィール名のフィールドを作成して下さい。管理画面のプロフィール欄から作成出来ます。この時必ず、複数項目を設定出来る、ラジオボタンかチェックボックスで項目を作成して下さい。
先ほどセットしたParentと同じ名称のプロフィール欄

表示確認

表示されたウィジェット

サブカテゴリーまで表示したい

現在のバージョンではプロフィールグループを合わせて使います。登録するユーザーによって、プロフィールの内容が全く異なるような街のポータルサイトでは威力を発揮します。

もちろん、BuddyPressの各ユーザーをプロフィールとしてチェックが入っていれば、ウィジェットのリンクをクリックした時にそのユーザーだけが絞り込まれて表示されます

サブカテゴリー

サブカテゴリーを使うには、プロフィールグループを合わせて使います。まず、先ほどのウィジェットのChildの項目に、任意でプロフィールの名称を設定します。ここでは同じ名称にしましたが、Parentと同じ名称にする必要はないので、好きに設定してかまいません。
Childの項目設定

Parentで設定した項目と同じ名称のプロフィールグループを作る

Parentで設定した項目と同じ名称のプロフィールグループを作ります。
Parentと同じ項目のプロフィールグループ
私は「ジャンル」という名称をParentに設定しました。そして、「ジャンル」の項目と同じ名称のプロフィールグループを作りました。もしもサブカテゴリーが必要のない項目の場合はプロフィールグループは作らなくても大丈夫です。サブカテゴリーが欲しいものだけプロフィールグループを作ればよいのです。
まだこれだけではサブカテゴリーまで分類されません。

各プロフィールグループに、Childと同じ名称のサブカテゴリーを設定

最後にサブカテゴリーに設定したい項目を作成します。ここでは私は、保育園というグループの中「ジャンル」というプロフィール項目を作成しました。この「ジャンル」という項目名はやはりラジオボタンやチェックボックスのような複数項目が選択出来るフォームを設定して下さい。
他のグループにも同様に「ジャンル」という項目名で、複数項目が選択出来るようなフォームで設定します。
サブカテゴリー

表示確認

サブカテゴリーまで無事設定完了
これでサブカテゴリーまで分類出来ました。例だと、保育園や病院のカテゴリーに分類されています。
プロフィールグループを使うことのメリットは、保育園や病院では入力するプロフィールの項目が全く異なります。BuddyPressの場合は入力しない場合は項目ごと全く表示されません。

今後のアップグレード予定

通常のフィールドも親として使えるように出来たらと思っています。
これらを利用して、例えばユーザーをエリア別、さらに詳細なエリア別に表示出来たら機能的には大規模なポータルも作れるんじゃないかと夢が膨らみます。
BuddyPressを愛する人たちに少しでもお役に立てたら幸いです。