「wordpress」タグアーカイブ

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カスタマイズメモ 返信メール、メニュー、管理画面、投稿画面など (SANGOテンプレート)

BuddyPressのカスタマイズメモ

基本設定と運用の前提

・BuddyPressでユーザー登録(投稿者として)してもらい、みんなで記事を投稿してもらう

・ユーザー同士は顔見知りじゃないので、それぞれの記事は、管理画面では見えないように

・ユーザー(投稿者権限)の管理画面でのメニューを一部非表示に

・ユーザーの投稿画面で表示オプションを非表示に

・Buddypressのmemberページを使わずに、SangoのAuthorページを活用

・アップデートの通知などをユーザーに見えないように

・コメント時のメール通知などの最適化

・アップデート時に問題が起こらないように、子テーマ化して、コアファイルは極力触らず、functions.phpを使う
 

BuddyPressで実現したカスタマイズ一覧

サイトフロント(管理画面以外の見えるWebサイト全て)

・サイドバーにオリジナルWidget、ユーザーごとの記事PVランキング「人気のメンバー」を追加

・サイトフロントのアドミンバー非表示

・ログイン直後に管理画面ではなくサイトフロントへ飛ばす

・サイトフロントのコメントの編集ボタンを削除

・ログイン時は、非ログイン時と違うメニューを表示させる

 

管理画面全体

・管理画面の一部メニュー非表示

・管理画面のサブメニューの非表示

・管理画面のメニューのアドミンバーの、BuddyPress通知の吹き出しを削除

・管理画面のアドミンバー内の「ヘルプ」「表示オプション」「Wロゴ」などのメニューを非表示

・Wordpressやプラグインのアップデート通知を非表示

・「投稿」→「記事」、「コメント」→「あなたの記事へのコメント」へ、メニューの文言変更

・ダッシュボード画面の「アクティビティ」「クイックドラフト」などを非表示

・管理画面用のCSSファイルを、子テーマ化する

・ログイン画面の「W」のロゴを他の画像に変え、リンク先、マウスホバーの文言変更

・管理画面のプロフィール項目でいらない部分を消す

 

投稿画面、投稿権限

・記事投稿でタイトルの入力を必須にする

・投稿者の「投稿」では、自分の投稿のみ表示させる(他ユーザーの投稿は管理画面の投稿一覧では見えない)

・自分のもののみの投稿数を取得して、記事数に代入

・upした画像は投稿者本人しか見えないようにする

・投稿画面で、メタディスクリプション、トラックバック、リビジョン、フォーマットなどの不要なオプションを削除

・cssで投稿画面の不要な文字修飾オプションを非表示に ※・sango のビジュアルエディターのバグ修正(スマホでTinyMCEの文字修飾がおかしい)へリンク

 

コメント関連

・「あなたのコメント」を管理画面のメニューに追加

・「あなたのコメント」に投稿者自身が、人の記事に書いたコメントを表示

・「あなたのコメント」の上のコメントメニュー(スパム、承認待ち等を)削除

・「あなたのコメント」の上のコメントメニュー(スパムチェック、一括操作も)削除

・「あなたのコメント」「あなたの記事へのコメント」の編集権を調整して、「あなたのコメント」に編集権限を与え、「あなたのコメント」に「削除する」だけ残す

・「コメント」に、「あなたの記事へのコメント」のみを表示させる

・コメントページの上のコメント数を「あなたの記事に書かれた、人からのコメント数」のみカウントする

・「あなたの記事に書かれた、人からのコメント」で上のコメントメニュー削除

 

BuddyPressのメンバー機能

・メンバーなどWidget/ウィジェットのURLの文字列を、別の文字列に置換する

・メンバーなどWidget/ウィジェットのURLをリダイレクトさせる

・メンバー登録時の、ユーザー名で禁止文字列を設定する

・メンバーのタイトルの名前(ユーザーID)に「さん」を追加して表示

・文言変更「登録」→「新規登録」に

 

Sangoのバグ修正・カスタマイズ

・sango のビジュアルエディターのバグ修正(スマホでTinyMCEの文字修飾がおかしい)

・新たなプルダウン(フォントサイズ)追加

・管理画面のプロフィールで、sangoによる追加項目を一旦削除

・管理画面のプロフィールで、Sangoの「肩書」の部分を「出身地」などに変更、管理画面のプロフィールでいらない部分を消す

Sangoの著者ページ「author/…」でその著者の投稿が無いと、プロフィール詳細とアバターが正しく表示されないバグ修正

 

通知メールのカスタマイズ

・コメント通知メールの差出人(wordpress@yourdomain.com)を変更

・トラックバック、ピンバック、コメントの通知メール内容を変更

 

プラグインのカスタマイズ(子テーマ及びfunctions.phpで)

・メールに返信した時にコメントを書いた人のメールアドレスが出ないようにする(Better Notifications for WordPressの設定の問題点を修正するため、管理画面で特定のページの時のみ、jsを上書きする)

「あなたの記事に書かれた、人からのコメント」で上のコメントメニューの調整・非表示 WordPress BuddyPressカスタマイズメモ

コメントページの上のメニューを非表示にしたりする方法

WordPressのSNSプラグイン、BuddyPressを導入すると不特定多数のメンバーが参加することになる。

投稿者権限の一般参加ユーザーには、コメントの承認や非承認の権限は必要ないので、メニューごと非表示にしてしまおう。


 ↓↓↓

 

functions.php へ記述

人の書いたコメントの編集権限は一切必要ないので、ゴミ箱、スパム、承認待ち、などを全て非表示にしている。

//あなたの記事へのコメントで上メニュー削除

if ( current_user_can( 'author' ) && ($pagenow == 'edit-comments.php')) {
add_filter( 'comment_status_links',
function( $status_links ) {
$status_links['trash'] = sprintf(
//  "<a href=%s>%s <span class='count'></span></a>",
//  esc_url( admin_url( 'edit-comments.php?comment_status=trash') ),
//  __( 'ゴミ箱' )
);
$status_links['spam'] = sprintf(
//  "<a href=%s>%s <span class='count'></span></a>",
//  esc_url( admin_url( 'edit-comments.php?comment_status=spam') ),
//  __( 'スパム' )
);
$status_links['moderated'] = sprintf(
//  "<a href=%s>%s <span class='count'></span></a>",
//  esc_url( admin_url( 'edit-comments.php?comment_status=moderated') ),
//  __( 'コメント一覧' )
);
$status_links['mine'] = sprintf(
//  "<a href=%s>%s <span class='count'></span></a>",
//  esc_url( admin_url( 'edit-comments.php?comment_status=mine') ),
//  __( '自分' )
);
$status_links['all'] = sprintf(
//  "<a href=%s>%s <span class='count'></span></a>",
//  esc_url( admin_url( 'edit-comments.php?comment_status=all') ),
//  __( 'All' )
);
return $status_links; 
} ); }

頭に「//」がついている場合は、コメントアウトされて空っぽになる(つまり非表示になる)、上のコードで、例えば「全て」も残したい場合は、
頭の

//  "<a href=%s>%s <span class='count'></span></a>",
//  esc_url( admin_url( 'edit-comments.php?comment_status=all') ),
//  __( 'All' )

の行のはじめの「//」を全て消しておく。
 

関連記事:
スパムチェック、一括操作などのバルクメニューと呼ばれるものを削除する方法はこちら参照。

「コメント」に、「あなたの記事に他ユーザーが書いたコメント」のみを表示させる方法はこちらを参照。

投稿者が人のコメントを編集、削除できないようにする方法はこちらを参照。