QUOIT Blog

WordPressで寄稿者が投稿したら任意のメールアドレスにメールする

この記事は6年以上前の記事です。情報が古い場合がありますのでお気を付け下さい。

そんな話題があったのでちょっと書いてみた。手順は以下。

いじるファイルは以下の2つ

wp-includes/functions.php
wp-includes/post.php

まずはfunctions.phpに新しくfunctionを書く。
どこでもいいけど最後らへんがいいんじゃないかな。

function email_when_pending($post_ID)  {
	$emailto = "yakumo@quoit.jp";
	$emailfrom = "yakumo@quoit.jp";
	if(!mb_send_mail(
		$emailto,#To
		"メール来たお(´ω`)",#Title
		"確認してね☆",#Body
		sprintf("From: %s\r\n",$emailfrom).
		sprintf("Reply-To: %s\r\n",$emailfrom).
		sprintf("X-Mailer: PHP/%s ", phpversion()),
		sprintf("-f %s ",$emailfrom)#From
	)){
		return false;
	}else{
		return $post_ID;
	}
}

return false;はいらないかもしれないけど、まぁ念のため。

$emailtoと$emailfromにそれぞれ任意のメールアドレスを入れる。

次にpost.php。2714行目くらいに、次の関数がある。

function wp_transition_post_status($new_status, $old_status, $post) {
	do_action('transition_post_status', $new_status, $old_status, $post);
	do_action("${old_status}_to_$new_status", $post);
	do_action("${new_status}_$post->post_type", $post->ID, $post);

}

これにちょっと足す。

function wp_transition_post_status($new_status, $old_status, $post) {
	do_action('transition_post_status', $new_status, $old_status, $post);
	do_action("${old_status}_to_$new_status", $post);
	do_action("${new_status}_$post->post_type", $post->ID, $post);

	add_action('draft_to_pending', 'email_when_pending');
	add_action('new_to_pending', 'email_when_pending');
	
}

これで、寄稿者が投稿してレビュー待ちになったらメールが来る。

一応僕の環境では動きました。