「sns」タグアーカイブ

WordPress のWidget/ウィジェットなどのリンクのURLの文字列を、別の文字列に置換する方法 BuddyPress(テーマはSango)カスタマイズメモ

BuddyPressのメンバーのページを別ページで強制的に運用する

WordPressのSNSプラグイン、BuddyPressは非常に優秀だが、普通のSNSからすると少し奇妙な部分もある。

今回はSangoのテーマでBuddyPressでSNS化させる際に、BuddyPressの「メンバーページ」を使わず、その変わりにSangoの「Authorページ」を使う前提で話を進める。
 

やる事と条件、注意点など

・BuddyPressのメンバーページは使わない。

ダサすぎる。ので、↓↓↓ サンゴテーマの著者ページだけ使う。

・BuddyPressのメンバー機能はBuddyPressのコア部分なので、単純に無効化はできない。

・表向き、メンバーページには行けないようにする。直でURLを入力された場合はリダイレクト。

・ウィジェットのメンバーやログインからのリンクはAuthorに飛ぶように、URLのmemberの文字列をAuthorに置換する。

これとか

ここからのリンク先。
 

functions.php へ記述

まず、BuddyPressが入った状態で、管理画面の「固定ページ一覧」→「メンバー/member」のスラッグがmemberになっているか確認しておく。

memberじゃない場合は、下記のfunctions.phpへの記述コードの’member‘の部分と同じにしておくこと。

アクティベイトのプロセスでエラーが出ることが確認されているので、念のため日本語”メンバー”などは避けた方がいいと思う。

//Widgetの「メンバー」などのパーマリンク、”member”を”author”へ変更してURLを出力。固定ページのメンバースラッグをmemberにしておくこと

function sango_get_member_permalink() {
 global $members_template;
 return apply_filters( 'sango_get_member_permalink', bp_core_get_user_domain( $members_template->member->id, $members_template->member->user_nicename, $members_template->member->user_login ) );
} //functionで、BuddyPressのメンバーのパーマリンク(URL)を取得

function sango_member_permalink() {
 $bpmemberurl = esc_url( sango_get_member_permalink() );
 $sangomemberurl = str_replace( 'member', 'author', $bpmemberurl );
 echo $sangomemberurl;
} //上で取得したBuddyPressのメンバーのパーマリンクの"member"を"author"に置き換える
add_filter( 'bp_get_member_permalink', 'sango_member_permalink' );

メンバーウィジェットだけでなく、ログインウィジェットのアバターのURLなども同じように置換してURLを出力させる。

//login widgetのアバターの”member”のURLを”author”へ置換。固定ページのメンバースラッグをmemberにしておくこと

function sango_get_loggedin_user_domain() {
$bp = buddypress();
return apply_filters( 'sango_get_loggedin_user_domain', isset( $bp->loggedin_user->domain ) ? $bp->loggedin_user->domain : '' );
} //BuddyPressのログインユーザーのページであるhttps://....com/member/user_ID を取得

function sango_loggedin_user_domain() {
$bploginmemberurl = esc_url( sango_get_loggedin_user_domain() );
$sangologinmemberurl = str_replace( 'member', 'author', $bploginmemberurl );
return $sangologinmemberurl;
} //上で取得したBuddyPressのメンバーのパーマリンクの"member"を"author"に置き換える
add_filter( 'bp_loggedin_user_domain', 'sango_loggedin_user_domain' );

これで、ウィジェットやアバターをクリックして飛ぶリンク先のBuddyPressのmemberページのURLは、全てSangoの著者ページであるauthorページに置き換えられる。
 

関連記事:
直接URLに xxx.com/member/user_IDと入力されてしまうと、memberページにいけてしまうので、ついでに .htaccess などで、URL自体をリダイレクトしておくと安心。
・メンバーなどWidget/ウィジェットのURLをリダイレクトさせる

関連記事の「Widget/ウィジェットなどのリンクのURLの文字列を、別の文字列に置換する方法」では、パーマリンク内の文字列の”member”を”author”に置換するので、ユーザーIDで”member”を使われないように設定しておく必要がある。
BuddyPress のメンバー登録時の、ユーザー名で使わせない禁止文字列を設定する

WordPress BuddyPressカスタマイズメモ ログイン直後に管理画面ではなくサイトフロントへ飛ばす

WordPressでログイン直後に管理画面ではなく、トップページへ飛ばす方法

<追加したい機能>

WordPressのSNSプラグイン、BuddyPressのメンバーは、管理画面からだけでなく、サイトフロント(トップページとか)のログインウィジェットからログインする場合もある。

なので、ログイン後に管理画面に飛ばさず、そのままホームぺージ(サイトフロント)にとどまってもらいたい。
 

functions.php へ記述

//ログイン後もサイトフロントへ飛ばす

function login_redirect_page() {
 return home_url();
}
add_filter('login_redirect', 'login_redirect_page');

これで、login_redirect のフィルターに home_url を返すように設定するだけでいい。

なお、一般ユーザーではなく、管理者は管理画面に直接飛ばしたい場合は、

if ( ! current_user_can( 'administrator' ) ) {

}

で全体を囲めばOK。