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的函式
-
//發佈文章的通知
-
//
-
function send_email($new_status, $old_status, $post){
-
//修改內文格式為text/html
-
//add_filter( ‘wp_mail_content_type’, ‘wpdocs_set_html_mail_content_type’ );
-
-
$postOne = get_post($post);
-
$postUrl = get_permalink($post);
-
$postBody= $postOne->post_content;
-
$titleOne = $postOne->post_title;
-
$author = $post->post_author; /* Post author ID. */
-
$name = get_the_author_meta( ‘nickname’, $author );
-
-
//判斷文章狀態
-
if ( $new_status == “publish” && $old_status !== “publish” && $post->post_type == “post”)
-
{
-
$to = ‘trico109748007.**************@blogger.com’; $subject = ‘莊生趣味發佈-‘.$titleOne; $message = $postBody;
-
$headers = ‘From:莊生趣味<trico109748007@gmail.com>’;
-
wp_mail( $to, $subject, $message, $headers );
-
}
-
//移除格式設定,回復成預設格式 text/plain
-
//remove_filter( ‘wp_mail_content_type’, ‘wpdocs_set_html_mail_content_type’ );
-
}
-
add_action(‘transition_post_status’,‘send_email’,10,3);
-
-
function wpdocs_set_html_mail_content_type() {
-
return ‘text/html’;
-
}
如果網站本來就可以正常發出郵件的話,增加以上程式碼
當發佈新文章之後,就會將文章寄到blogger接收郵件的信箱,並存成草稿
可以使用WP Mail Logging查看紀錄,不過有時候會沒有紀錄,不知道是不是文章主旨太長的緣故?