ようこそのお運びで、厚く御礼申し上げます。
43日目です。今回は更新時を取得して、メール送信をしてみます。
投稿時に、複数のアドレスにお知らせメールを送信する。
記事を投稿したら、指定した複数のメールアドレスにお知らせメールを送信します。
- 記事を更新するときをフックする
- メールアドレスや本文を指定する
- メールを送信する
まずは、function.phpに書いてみます。
では、function.phpに以下のコードを書きました。
001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 | add_action( 'publish_post' , 'paka3PostMail' , 10, 2); function paka3PostMail( $post_ID , $post ){ $mail_address = array ( '****@****.com' , '*****@**.jp' ); $subject = "ブログ更新のお知らせ" ; $content = $post ->post_title; $link = get_permalink( $post_ID ); $message =<<<EOS ブログが更新されました。 ※今回のタイトル 「{ $content }」 { $link } EOS; wp_mail( $mail_address , $subject , $message ); } |
ポイントはどこ?
今回のポイントはまず一つは更新時の取得です。
- 「publish_post」をアクションフックしていますが、正確には{$new_status}_{$post->post_type}をフックすることになります。
(こちらのページを参照してください。)001add_action(
'publish_post'
,
'paka3PostMail'
, 10, 2);
- 状態「$new_status」については、WordPress Codexの日本語版にまとめてくれていますので、こちらを参照してください。
※今回は「投稿やページが公開済み」の状態を取得するので「publish」となります。 - {$post->post_type}には、「post」の他に「page」や「カスタム投稿タイプ名」が設定できそうです。
次にメールの送信、こちらは「wp_mail」を使います。
- WordPressにはメール関数が用意されています。
送信先メールアドレスは配列で複数登録することもできます。001wp_mail(
$mail_address
,
$subject
,
$message
);
- その他header(ccやFrom等)の設定も変えれます。
(WordPress Codex:wp_mail参照)
コードをプラグイン用のファイルにします
それではfunction.phpに書いたコードを消して、
「paka3_postMail.php」というファイルを作成し、以下のコードを記入します。
<?php | |
/* | |
Plugin Name: paka3PostMail | |
Plugin URI: http://www.paka3.com/wpplugin | |
Description: 投稿時に、複数のアドレスにお知らせメールを送信する。 | |
Author: Shoji ENDO | |
Version: 0.1 | |
Author URI:http://www.paka3.com/ | |
*/ | |
add_action('publish_post', 'paka3PostMail', 10, 2); | |
function paka3PostMail($post_ID, $post){ | |
$mail_address =array('****@***.com', | |
'******@***.jp'); | |
$subject = "パカラボブログ更新のお知らせ"; | |
$content = $post->post_title; | |
$link = get_permalink($post_ID); | |
$message =<<<EOS | |
アルパカラボです。 | |
ブログが更新されました。 | |
※今回のタイトル | |
「{$content}」 | |
{$link} | |
EOS; | |
wp_mail( $mail_address, $subject, $message ); | |
} | |
?> |
このファイルを[wp-content]>「plugins」ディレクトリに入れ、管理画面で有効にして完了です。
今回のまとめ
今回、アクションフックした「publish_post」これのフィルター名を探していたんですが、見つからなかったので「うーん」となったのですが、実際は{$new_status}_{$post->post_type}となっていて、さらに「transition_post_status」というものをフックすると細かくわけれそうなのがわかりました。
バージョンがあがる毎に、新しい関数がやっぱり増えたり、進化していったり・・・。ググると古い情報もあるので、なかなか追いつくのが大変だなー。次回はもうちょっと、公開時の場合分けしてみようと思います。