我想在Wordpress中創建一個推薦形式和列表頁面,並且在發送電子郵件給推薦作者時遇到問題,通知他他的帖子已發佈。發送通知郵件第一次在Wordpress發佈帖子
表單經過驗證和處理後,會自動創建一個帶有wp_insert_post()
的待處理文章,表單詳細信息存儲在高級自定義字段插件生成的文本輸入中。當我點擊發布按鈕時,它應該向作者發送一封通知郵件。下面是我寫的函數:
function publish_post_notification($post_id){
$author = get_field('author_email', $post_id); // get author email from custom fields
if(isset($author)){
require_once('testimoniale/mail-config.php'); // PHPMailer config
$mail->addAddress($author); // Add a recipient
$mail->Subject = 'Your testimonial has been published !';
ob_start();
include('testimoniale/mail_template/notification-template.php');
$mail->Body = ob_get_contents();
$mail->AltBody = 'Your testimonial has been published !'; // Alternative text for non-html mail clients
if(!$mail->send()) {
echo 'Message could not be sent.';
echo 'Mailer Error: ' . $mail->ErrorInfo;
} else {
echo 'Message has been sent';
}
ob_end_clean();
}
add_action('publish_post','publish_post_notification',10,1);
問題是,當我發表這篇文章的第一次,也不會發送電子郵件,但它確實如果我舉個例子,後來改文章狀態等待並重新發布,或者我更新該帖子。
我使用save_post
鉤嘗試,但它觸發時通過wp_insert_post()
最初創建以及後,出於某種原因transition_post_status
,pending_to_publish
和post_updated
沒有任何爲我工作。
有什麼建議嗎?
在此先感謝
使用保存後鉤檢查function.You內後的狀態可以設置後元,以防止進一步的電子郵件。 – David
你能舉個例子嗎?我將如何去檢查是否正在創建帖子,以便鉤子不會觸發? –
首先嚐試一下,你可以使用'get_post'來拉動帖子,然後使用'update_post_meta()'保存自定義數據。 – David