「メールアドレス」タグアーカイブ

トラックバック、ピンバック、コメントの通知メール内容を変更 WordPress BuddyPressカスタマイズメモ

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

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

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

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

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

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

functions.php へ記述

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

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

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

function custom_comment_moderation_text( $notify_message, $comment_id ) {
 global $wpdb;
 $comment = get_comment($comment_id);
 $post = get_post($comment->comment_post_ID);
 $comment_author_domain = @gethostbyaddr($comment->comment_author_IP);
 $comments_waiting = $wpdb->get_var("SELECT count(comment_ID) FROM $wpdb->comments WHERE comment_approved = '0'");
 $blogname = wp_specialchars_decode(get_option('blogname'), ENT_QUOTES);
 $comment_content = wp_specialchars_decode( $comment->comment_content );
 switch ( $comment->comment_type ) {
  case 'trackback': // トラックバック
  $notify_message = "「{$post->post_title}」に新しいトラックバックがありました。\r\n";
  $notify_message .= get_permalink($comment->comment_post_ID) . "\r\n\r\n";
  $notify_message .= "\r\n";
  $notify_message .= "トラックバック元: {$comment->comment_author}\r\n";
  //$notify_message .= "IP: {$comment->comment_author_IP} ({$comment_author_domain})\r\n";
  //$notify_message .= "URL: {$comment->comment_author_url}\r\n";
  $notify_message .= "トラックバックの概要: \r\n";
  $notify_message .= "{$comment_content}\r\n";
  $notify_message .= "\r\n";
  break;
 case 'pingback': // ピンバック
  $notify_message = "「{$post->post_title}」に新しいピンバックがありました。\r\n";
  $notify_message .= get_permalink($comment->comment_post_ID) . "\r\n\r\n";
  $notify_message .= "\r\n";
  $notify_message .= "ピンバック元: {$comment->comment_author}\r\n";
  //$notify_message .= "IP: {$comment->comment_author_IP} ({$comment_author_domain})\r\n";
  //$notify_message .= "URL: {$comment->comment_author_url}\r\n";
  $notify_message .= "ピンバックの概要: \r\n";
  $notify_message .= "{$comment_content}\r\n";
  $notify_message .= "\r\n";
  break;
 default: // コメント
  $notify_message = "「{$post->post_title}」に新しいコメントがありました。\r\n";
  $notify_message .= get_permalink($comment->comment_post_ID) . "\r\n\r\n";
  $notify_message .= "\r\n";
  $notify_message .= "投稿者: {$comment->comment_author}\r\n";
  //$notify_message .= "IP: {$comment->comment_author_IP} ({$comment_author_domain})\r\n";
  //$notify_message .= "メールアドレス: {$comment->comment_author_email}\r\n";
  //$notify_message .= "URL: {$comment->comment_author_url}\r\n";
  $notify_message .= "コメント: \r\n";
  $notify_message .= "{$comment_content}\r\n";
  $notify_message .= "\r\n";
  break;
 }
 return $notify_message;
}
add_filter( 'comment_moderation_text', 'custom_comment_moderation_text', 10, 2 );
add_filter( 'comment_notification_text', 'custom_comment_moderation_text', 10, 2 );

これで、コメント承認通知メールと、コメントがつけられた時の通知メールの、内容を変更してIPアドレスなどを表示しないようにする。

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

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

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

関連記事:
・コメント通知メールの差出人(wordpress@yourdomain.com)のメールアドレスを変更

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

この記事も読まれています

コメント通知メールの差出人(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を上書きする)

BuddyPress のメンバー登録時の、ユーザー名で使わせない禁止文字列を設定する WordPress カスタマイズメモ

メンバー登録時の、ユーザー名で使わせない禁止文字列を設定する

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

色々な人が参加するので、アカウントを乗っ取られないように’1111′, ‘1234’など 簡単なユーザーIDは使わせないことはできるのだが、簡単じゃないけど使わせたくない文字列、例えば’administrator’なども禁止文字列として登録したい場合。
 

functions.php へ記述

関連記事の「Widget/ウィジェットなどのリンクのURLの文字列を、別の文字列に置換する方法」では、パーマリンク内の文字列の”member”を”author”に置換する。

だから、ユーザーIDで”member”を使われないように設定しておく必要がある。

例)
ユーザーIDがabcdeの場合
xxx.com/member/abcde →置換後→ xxx.com/author/abcde で、問題なくSangoの著者ページが表示される。

ユーザーIDがabmembercdの場合
xxx.com/member/abmembercd →置換後→ xxx.com/author/abauthorcd となり、ユーザーIDまで置換されてエラーになる。

これを防ぐため。

//ユーザ名禁止文字memberを登録。memberをauthorに置換してるから。

function nendebcom_illegal_user_logins( $illegal_logins ){
$illegal_names = array( 'www', 'web', 'root', 'admin', 'main', 'invite', 'administrator', 'member' ); //元々の禁止文字列 www、admin等に加え、memberも禁止
$illegal_logins = array_merge( $illegal_logins, $illegal_names );
return $illegal_logins;
}
add_filter( 'illegal_user_logins', 'nendebcom_illegal_user_logins' );

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

メンバーなどWidget/ウィジェットのURLをリダイレクトさせる(テーマはSango)