「スマホ・パソコン・Web関連」カテゴリーアーカイブ

コメント通知メールのreply-toヘッダーに出る、著者の返信用メールアドレスを削除、Better Notifications for WordPressの設定の問題点を修正するため、管理画面で特定のページの時のみ、jsを上書きする BuddyPressカスタマイズメモ

WordPressのコメント通知メールに返信すると、コメントを書いた人のメールアドレスが表示されるのを防ぐ方法

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

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

その通知メールに、返信すると、コメントを書いた人のメールアドレスへの返信になってしまう。

投稿者同士のメールアドレスは知らせたくないのでこれを削除したい。
 

プラグインの Better Notifications for WordPress を使うことで実現できそうなのだが、プラグインにバグ(?)があり、それを修正しないと、適切に設定ができないので修正する方法を紹介。

バグは、誰に通知を送るのかを選ぶ時に、なぜか、権限ごとにしか選べない。例えば Author で選ぶと、投稿者全員に通知がいってしまう。

これを、著者のみへの通知とする。
 

functions.php へ記述

・Better Notifications for WordPressの設定の問題点を修正するため、管理画面で特定のページの時のみ、jsを上書きする

//Notificationsの選択肢のpost-author非表示を表示するよう上書きする。wp-plugin/bnfw/assets/js/bnfw.js

if ( 'post-new.php' == $pagenow ) { //現在の画面がNotificationsの時のみ
function yuya_bnfw_overwrite() {
?>
<script type="text/javascript">
jQuery(document).ready(function() {
$notification = document.getElementByName(notification).value;
if ( $notification === 'new-comment' ) {
 $( '#post-author' ).show(); //元々は非表示にされているが、これを上書きして表示させる
}});
</script>
<?php
}
add_action( 'admin_head-post.php', 'yuya_bnfw_overwrite', 20 );
}

これで、 Send to Author で、 Send this notification to the Author (著者にこの通知メールを送る)を選べるようになる。

Better Notifications for WordPress の設定

Notification For
New Comment (新しいコメント)

Additional Email Fields
チェックを入れて、返信メールアドレスや、送信者を入力する。

From Name and Email
差出人名、メールアドレス

Reply To
通知メールに「返信」した時の返信先

Send to Author
Send this notification to the Author(著者に通知を送る)チェック
Do not send this Notification to the User that triggered it(起点となった人には通知を送らない:つまり、「自分で自分の記事にコメントした場合」は通知を送らない)

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

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

コメント通知メールの差出人(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の著者ページ「author/…」でその著者の投稿が無いと、アバターが正しく表示されないバグ修正 WordPress BuddyPressカスタマイズメモ

サンゴのバグ修正、著者ページで投稿がないとアバターやプロフィールが表示されない

そのユーザー(著者)の投稿した記事があれば、記事一覧の上に、アバターの写真とユーザー名、プロフィールの詳細が表示されるが…

投稿した記事がない場合は、アバターもデフォルトのものになるし、プロフィールの詳細が表示されない…

 

修正するファイル

wp-content/themes/sango-theme/parts/archive に入っている

archive-header.php

がこれにあたる。

これを同じ階層で子テーマにコピペで突っ込む。
 

修正する箇所

元の4行目あたり

 <p class="author_page_img">
  <?php
   //著者画像
   $iconimg = get_avatar( get_the_author_meta( 'ID' ), 125 );
   if($iconimg) echo $iconimg;
  ?>
 </p>

 ↓↓↓

 <p class="author_page_img">
   <?php
   //著者画像
   $iconimg = get_avatar( get_the_author_meta('ID',$author) );
   if($iconimg) echo $iconimg;
  ?>
 </p>

get_avatar( get_the_author_meta( ‘ID’ ), 125 );

だと、その記事の著者になってしまうので、

$iconimg = get_avatar( get_the_author_meta(‘ID’,$author) );

として、そのURL author/userID の userID 部分の人のアバターを取得するように変更。

次にプロフィールの詳細の部分で、記事投稿がない場合には、別途プロフィールの詳細を表示させる。(投稿がある場合は、従来のSANGOのテンプレのものがそのまま表示される)

 <h1 class="dfont">
  <?php echo esc_attr(get_the_author_meta('display_name',$author)); ?> <?php fa_tag("check-circle","check-circle",false) ?>
 </h1>
 <?php else : //著者ページ以外?>
 <h1>
  <?php
   if( output_archive_title() ){

 ↓↓↓

 <h1 class="dfont">
  <?php echo esc_attr(get_the_author_meta('display_name',$author)); ?> <?php fa_tag("check-circle","check-circle",false) ?>
 </h1>
 <?php 
  if( !have_posts() ) { //投稿がない場合以下を実行
   echo '<div class="taxonomy-description entry-content">'.strip_tags(get_the_author_meta( 'description', get_the_author_meta('ID',$author) )).'</div>'; // プロフィールの詳細を表示
  }
 ?>
 <?php else : //著者ページ以外?>
  <h1>
   <?php
    if( output_archive_title() ){

これで、記事がなくてもプロフィールアバターとプロフィールの詳細が表示される。