「カスタマイズ」タグアーカイブ

コメント通知メールの差出人(wordpress@yourdomain.com)のメールアドレスを変更 WordPress BuddyPressカスタマイズメモ

wordpressからの通知メールと通知内容を変更する方法

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

コメントがついた時に、投稿者にコメントが来たという通知メールが届く。

そこにIPアドレスが表示されたり、著者のURLや、コメントを書いた人のメールアドレスが表示される。

投稿者にIPメールアドレスなどは知らせる必要はないのでこれを削除したい。

ということで、この差出人と、メールの内容変更する。
 

functions.php へ記述

//通知メールの差出人の名前を「管理人からのお知らせ」へ変更

function custom_mail_from_name( $from_name ) {
 return '管理人からのお知らせ';
}
add_filter( 'wp_mail_from_name', 'custom_mail_from_name' );

//通知メールのメアド変更

function custom_mail_from( $from_email ) {
 return 'no-reply@xxxxxxxx.com';
}
add_filter( 'wp_mail_from', 'custom_mail_from' );

//返信のメールアドレス変更

add_filter( 'bp_email_set_reply_to', function( $retval ) {
 return new BP_Email_Recipient( 'no-reply@xxxxxxx.com' );
} );

これで、コメント承認通知メールと、コメントがつけられた時の通知メールの、差出人が変更できる。

しかし、実は、問題があり、
通知メールに「返信」した時には、コメントをくれた人のメールアドレスへの返信となってしまう

メールヘッダーに reply-to 要素に、コメントを書いた人のメールアドレスが入っているからだ。

これを変更するには下記関連記事の、メールに返信した時にコメントを書いた人のメールアドレスが出ないようにする を参照。

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

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

管理画面のプロフィールで、Sangoの「肩書き」の部分を「出身地」などに変更し、管理画面のプロフィールでいらない部分を消す WordPress BuddyPressカスタマイズメモ

自分が、人の記事に書いたコメントだけをまとめて表示するページを作る

WordPressのSNSプラグイン、BuddyPressを導入しサンゴのテーマで運用する。

肩書き(入力するとプロフィールに表示)という欄があるのだが、これを出身地にしてみる。

地域コミュニティSNSなので。
 

functions.php へ記述

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

で紹介した通り、子テーマ → 親テーマ の順で functions.php が適用されるので、まずsangoによる追加項目を一旦削除してからの追加とすること。

//プロフィールの肩書の部分を出身地に変更

function yuya_add_profile($user_contactmethods)
{
 return array(
 'yourtitle' => '出身地',
 'twitter' => 'TwitterのURL',
 'facebook' => 'FacebookのURL',
 'instagram' => 'InstagramのURL',
 'feedly' => 'FeedlyのURL',
 'youtube' => 'YouTubeのURL',
 'line' => 'LINEのURL',
 );
}
add_filter('user_contactmethods', 'yuya_add_profile');

 

ついでに

管理画面のプロフィールでいらないものを消す方法

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

function user_profile_hide_style() {
  echo '<style>
  #your-profile .user-rich-editing-wrap, /* ビジュアルエディター */
  #your-profile .user-comment-shortcuts-wrap, /* キーボードショートカット */
  #your-profile .show-admin-bar, /* ツールバー */
  #your-profile .user-first-name-wrap, /* 名 */
  #your-profile .user-last-name-wrap, /* 姓 */
  //#your-profile .user-profile-picture, /* プロフィール写真 */
  #your-profile .user-sessions-wrap /* セッション */ {
    display: none;
  }
  </style>'.PHP_EOL;
}
add_action('admin_print_styles', 'user_profile_hide_style');

頭に「//」がついている場合は、コメントアウトされて非表示にならないので、上のコードで、例えば「コメント」も非表示にしたい場合は、
頭の

//#your-profile .user-profile-picture, /* プロフィール写真 */

の//を消しておく。

管理画面のプロフィールで、子テーマのfunctions.phpでsangoの親テーマによるfunctionsの追加項目を削除する WordPress BuddyPressカスタマイズメモ

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

WordPressの管理画面のプロフィールで、親テーマによって追加される項目を削除したい。

remove_filter('user_contactmethods', 'add_user_contactmethods');

でフィルターフックを削除できるのだが、

functions.phpに記述したものは、子テーマ → 親テーマ の順で適用される。

子テーマでいくら remove_filter しても、親テーマで上書き add_filter されてしまうので、効果がない。

親テーマの後に remove する必要がある。
 

functions.php へ記述

add_action( 'after_setup_theme', '' );

にフックすると、テーマの読み込み後(つまり、親テーマのfunctions.php後)に処理してくれる。

//管理画面のプロフィールのsangoの追加項目を一旦削除

function remove_sango_add_user_contactmethods()
{
 remove_filter('user_contactmethods', 'add_user_contactmethods');
}
add_action( 'after_setup_theme', 'remove_sango_add_user_contactmethods' );

これで、OK