那有沒有可能在臉書粉絲專頁貼文?
答案是可以的!!
接下來可能會問:有沒有可能在個人臉書貼文
可惜答案是不可能~~,
但是可以用分享的方式
臉書已經算是商業平台了,社交只是功能之一
粉絲頁的功能主要是為了跟成員互動,所以功能比較豐富
可以透過Facebook 粉絲專頁 API 來貼文
臉書提供的範例剛好就是PHP語言
- -H "Content-Type: application/json" \
- -d '{
- "message":"your_message_text",
- "link":"your_url",
- "published":"false",
- "scheduled_publish_time":"unix_time_stamp_of_a_future_date",
- }'
臉書的說明如下:
若要發佈貼文至粉絲專頁,請傳送 POST 要求至 /page_id/feed 端點(其中 page_id 為粉絲專頁編號),並使用下列參數:
- message 設為貼文的文字
- link 設為您的網址(若要張貼連結)
- published 設為 true 以立即發佈貼文(預設),或設為 false 以稍後發佈。
- 若設為 false,請包含 scheduled_publish_time,並使用下列任一日期格式:
- 整數 UNIX 時間戳記(以秒為單位),例如 1530432000
- ISO 8061 時間戳記字串(例如 2018-09-01T10:15:30+01:00)
- 可用 PHP 語言 strtotime() 解析的字串(例如 +2 weeks、tomorrow)
- 若設為 false,請包含 scheduled_publish_time,並使用下列任一日期格式:
不過如果按照這個範例程式是無法在執行的,會有2個問題
1.執行這樣的curl 指令,必須經過轉譯
但是wordpress不能轉譯,而且wordpress有自己的函式wp_remote_post()2.資料,少了重要的應用程式API編號:access_token
這個取得流程可以參考:Facebook粉專自動發文以及留言API在多次嘗試以及餵狗之後,最後可以執行的程式碼如下
整體程式碼的架構跟之前的同步寄信到Blogger基本相同,都是藉由wordpress本身的觸發函示來執行相關程式碼
程式碼
- //
- function post_fb($new_status, $old_status, $post){
- $postOne = get_post($post);
- $postUrl = get_permalink($post);
- $postBody= $postOne->post_content;
- $postExcerpt= $postOne->post_excerpt; /* 文章摘要 */
- $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")
- {
-
- $body = [
- 'message' => $postExcerpt, /* 文章摘要 */
- 'link' => $postUrl,
- 'published' => 'true',
- 'access_token' =>'---取得的長期權杖---'
- ];
-
- $body = wp_json_encode( $body );
-
- $options = [
- 'body' => $body,
- 'headers' => [
- 'Content-Type' => 'application/json',
- ],
- 'timeout' => 60,
- 'redirection' => 5,
- 'blocking' => true,
- 'httpversion' => '1.0',
- 'sslverify' => false,
- 'data_format' => 'body',
- ];
-
- wp_remote_post( $endpoint, $options );
- }
-
- }
- add_action('transition_post_status','post_fb',10,3);
主要的程式碼是#14~39,執行wp_remote_post()的參數設定
$endpoint 是要發出請求的網址
$body是陣列,架構為 key => value,之後用 wp_json_encode()轉為Json
$options是要帶入wp_remote_post()的參數陣列
後續編寫貼文的調整
過往沒有寫「 內容摘要」但是為了讓分享內容時可以帶入訊息,所以要把寫在粉絲頁的訊息寫入摘要

程式裡的$postExcerpt就是用來接收文章的摘要
這應該是最簡單的方式 原本想嘗試能不能跳出一個訊息框,將訊息輸入後帶回程式
但是光想就很麻煩 
備註
本篇文章發布之後,也同時貼文在粉絲頁

但是好像因為同時發文又寄信
導致網站速度變得很慢...
0 comments:
張貼留言