網站 / 從wordpress發佈新文章同步寄信到blogger儲存成草稿

google blogger可以接收電子郵件來發佈文章

當然這個電子郵件不是自己的gmail,而是指定的用於貼文的電子信箱

格式是google帳號名稱.自訂文字@blogger.com

因此,嘗試從wordpress發佈新文章,同步寄信到blogger設定的專用信箱來發佈草稿(因為通常會跑版,而且需要手動設定標籤)

這個可以透過add_action()勾點 transition_post_status事件來觸發郵寄文件的函式

所以可以修改 網站 / LINE Notify 推播其中的發佈新文章程式碼

程式碼的說明如下:

#3~23 自定義的發佈郵件函式 function send_email()

其中的#5是用來篩選 ‘wp_mail_content_type’ 資料,透過自訂的函式wpdocs_set_html_mail_content_type()

將預設的text/plain 轉換為’text/html

當郵件發出之後,再透過 #22刪除篩選器,回復成預設值

這個是參考WordPress Developer Resources的範例

不過後來沒有用到

因為原本的流程是將wordpress的文章,以html格式寄到blogger

但是,在blogger的編輯器會再解析一次內文,內容不是跑板就是有莫名的解析

例如: XXX.yyy,會加上a標籤變成超連結

於是改以純文字格式傳出html字串,之後再從編輯器貼到HTML編輯器

#7~12是文章的資料

#15~20 判斷文章的狀態,當文章的狀態從不是發佈狀態改變成發佈狀態才執行 wp_mail()

#17~19 是郵件的設定值,會傳入wp_mail()

#24 增加勾點 add_action()

當網站發佈新文章時,將文章資訊輸入並執行function send_email()

#26~27 function wpdocs_set_html_mail_content_type()

在#5要觸發用來修改wp_mail_content_type的函式

  1. //發佈文章的通知
  2. //
  3. function send_email($new_status, $old_status, $post){
  4. //修改內文格式為text/html
  5. //add_filter( ‘wp_mail_content_type’, ‘wpdocs_set_html_mail_content_type’ );
  6.  
  7.     $postOne = get_post($post);
  8.     $postUrl = get_permalink($post);
  9.     $postBody= $postOne->post_content;
  10.     $titleOne = $postOne->post_title;
  11.     $author = $post->post_author; /* Post author ID. */
  12.     $name = get_the_author_meta( ‘nickname’, $author );
  13.  
  14. //判斷文章狀態
  15.     if ( $new_status == “publish” && $old_status !== “publish” && $post->post_type == “post”)
  16.   {
  17.     $to = ‘trico109748007.**************@blogger.com’; $subject = ‘莊生趣味發佈-‘.$titleOne; $message = $postBody;
  18.     $headers = ‘From:莊生趣味<trico109748007@gmail.com>’;
  19.     wp_mail( $to, $subject, $message, $headers );
  20.   }
  21. //移除格式設定,回復成預設格式 text/plain
  22. //remove_filter( ‘wp_mail_content_type’, ‘wpdocs_set_html_mail_content_type’ );
  23. }
  24. add_action(‘transition_post_status’,‘send_email’,10,3);
  25.  
  26. function wpdocs_set_html_mail_content_type() {
  27.   return ‘text/html’;
  28. }
 

如果網站本來就可以正常發出郵件的話,增加以上程式碼

當發佈新文章之後,就會將文章寄到blogger接收郵件的信箱,並存成草稿

可以使用WP Mail Logging查看紀錄,不過有時候會沒有紀錄,不知道是不是文章主旨太長的緣故?