BuddyPressのメンバーページに独自メニューを追加してカスタムプロフィールの内容を表示する方法

BuddyPressのメンバーページに独自メニューを追加してカスタムプロフィールの内容を表示する方法

BuddyPressのメンバーページに独自メニューを追加してカスタムプロフィールの内容を表示する方法
  • シェアしてね♪
  • このエントリーをはてなブックマークに追加

  • このエントリーをはてなブックマークに追加

BuddyPressを使って構築しているサイトには、メンバーページが存在するかと思います。各メンバーは登録時に名前などのプロフィール情報を登録しますが、公開範囲が「わたしの友達」になっていると、メンバーページにアクセスしても友達になっていないと内容を確認することができません。

先日、クライアントに管理者だけは例外で「カスタムプロフィールで設定している生年月日を表示させたい」という要望をいただいて、独自のメニューを追加し、そこにカスタムプロフィールの生年月日を表示させるというカスタマイズを行いました。

今回はその時に追加した内容を、備忘録として残しておきたいと思います。

スポンサードリンク

BuddyPressのメンバーページに独自のメニューを追加してカスタムプロフィールの内容を表示する方法

bp-custom.phpというファイルを作成し、以下の内容を記述します。作成したbp-custom.phpは、wp-content/plugins直下にアップロードしてください。

bp-custom.php
<?php 
//独自メニューを追加 
add_action( 'bp_setup_nav', 'birthday_nav'); 
function birthday_nav() { 
global $bp; 
bp_core_new_nav_item( array( 
'name' => '生年月日', 
'slug' => 'birthday', 
'position' => 75, 
'screen_function' => 'birthday', 
'show_for_displayed_user' => true, 
'default_subnav_slug' => 'birthday', 
'item_css_id' => 'birthday',
'site_admin_only' => true
));
}
function birthday () { 
add_action( 'bp_template_title', 'birthday_title' ); //カスタムページの見出し
add_action( 'bp_template_content', 'birthday_content' ); //カスタムページに表示したい内容 
bp_core_load_template( apply_filters( 'bp_core_template_plugin', 'members/single/plugins' ) ); //テーマファイルの呼び出し
} 
//見出し
function birthday_title() { 
echo '生年月日';
} 
//表示する内容
function birthday_content() { 
$birth = xprofile_get_field_data('生年月日' ,bp_get_member_user_id());
echo mb_strimwidth($birth, 0, 10, "", utf8);
}

bp-custom.phpをアップロード後、メンバーページにアクセスすると、以下のように独自メニューが追加されています。

メンバーページに独自メニュー

上記は生年月日を表示させる方法ですが、「生年月日」の部分を他のカスタムプロフィール名に変更すれば、他のプロフィール情報を表示させることができます。

また、「’site_admin_only’ => true」は「’site_admin_only’ => false」にすることで、管理者以外も閲覧可能になりますので、管理者だけが見られるように限定する必要がない場合は「’site_admin_only’ => false」に変更してください。

さらに、生年月日をそのまま表示させると0:00という時間も出てしまうため、mb_strimwidthで日付の部分までで省略させています。他のカスタムプロフィールだと文字の省略は必要ないかと思います。

あとがき

BuddyPressを使っているサイトってそんなに多くないとは思いますが、参考になれば幸いです。

この記事が気に入ったら
いいね!してね♪

Twitter で
スポンサードリンク

関連記事

コメントを残す

メールアドレスが公開されることはありません。