※注意 この記事に書いてある方法を使うとエラーが起こるようになってしまいました。そのためあくまでも参考程度にしてください。
「WPに記事をアップした際に、指定したメールアドレスに対して通知を送りたい」
最近このような要望を受けました。
良い方法がないか探してみたところ、「Subscribe2」や「Post Notification」というプラグインを見つけることができました。
そこで「Subscribe2」というプラグインを試してみたものの、私にとっては使い勝手が悪く、何よりも、記事を投稿した瞬間に500エラーが出てしまう(エラーは出るけど記事自体は投稿されている)現象が発生してしまいました。
何よりも、個人的にはあまりプラグインを使いたくないという思いがあり、他にプラグインを利用しない方法を探してみたところ、ありました。プラグインを使わず記事をアップしたときにメール通知する方法が。
WordPressで記事を投稿した瞬間に外部にメールを送信する方法
ここに書かれている内容がまさに今回やりたいと思っていた内容、そのままでした。
以下のコードをfunctions.phpに追加します。
add_action( ‘transition_post_status’, function( $new_status, $old_status, $post ) {
if ( ‘publish’ == $new_status && ‘publish’ != $old_status && ‘post’ == $post->post_type ) {
$header = array( ‘From: from@gmail.com’ );
wp_mail( ‘to@gmail.com’, $post->post_title, get_permalink( $post->ID ), $header );
}
}, 10, 3 );
from@gmail.com⇒送り元のメールアドレス
to@gmail.com⇒送り先のメールアドレス
以上を任意で書き換えてください。
ただこの状態だと、送られてきたメールが寂しい感じで若干分かりにくいため、以下のようにしてみました。
add_action( ‘transition_post_status’, function( $new_status, $old_status, $post ) {
if ( ‘publish’ == $new_status && ‘publish’ != $old_status && ‘post’ == $post->post_type ) {
$header = array( ‘From: from@gmail.com’ );
wp_mail( ‘to@gmail.com’,’新しい記事が投稿されました。’, $post->post_title, get_permalink( $post->ID ), $header );
}
}, 10, 3 );
「新しい記事が投稿されました。」という言葉を追加したのです。これによりメールが届いた時に少しわかりやすくなりました。
ちなみにですが、この方法は個人でWPを利用している際には必要のないことだと思います。
例えば、「複数人でWPを管理しており、誰かが記事をアップしたときにその記事の内容をチェックしたい」という場合には便利な機能だと思います。外注さんを使っているアフィリエイターにとっても便利な機能かもしれません。
今回の方法はfunctions.phpにコードを追加するだけのシンプルなものです。プラグインは使いません。ただしfunctions.phpを編集することになるため、必ずバックアップを取ってから編集することをおススメします。