ร่วมลงนาม ยกเลิกกฎหมาย 3 ฉบับ มั่นคงภายใน - กฎอัยการศึก - พ.ร.ก.ฉุกเฉิน

WordPress to Multiply

เห็นเพื่อนฝูงคนถ่ายรูปเค้าเล่นเวบ multiply.com กันเป็นล่ำเป็นสัน ท่าทางก็ดูมีฟีเจอร์เยอะและเป็น community ดี เมื่อก่อนตอนที่มันเพิ่งฮิตก็ไปสมัครไว้ลองเล่นกับเค้าเหมือนกัน แต่เท่าที่ดูแล้วมัน customize ได้ไม่ตรงใจเท่าไหร่ รวมทั้งฟีเจอร์เรื่องแปะรูปก็ยังสู้ของ Flickr ไม่ได้ และที่สำคัญคือผมเป็นคนขี้เกียจ มีบล็อกอยู่ที่เดียวยังไม่ค่อยจะได้อัพเดตเท่าไหร่เลย ถ้าจะให้ไปอัพเดตที่นั่นด้วย คงไปไม่รอด

พยายามคิดหาวิธีที่จะทำให้โพสที่ dogpositive นี่ไปขึ้นที่ multiply ได้เองโดยอัตโนมัติ ก็เลยมาลองดูว่า multiply มี publish API อะไรให้ใช้หรือเปล่า ผลปรากฏว่าไม่มี… ไม่เป็นไร โชคดีที่มันยังมีฟีเจอร์โพสผ่านทาง email โดยคอนเซปต์มันก็คือ ให้เราส่ง email ไปที่ address ซักอันนึงที่กำหนด แล้วมันจะเอาขึ้นโพสให้

ทีนี้ก็มาคิดต่อว่า ทำยังไงเวลาเราเขียนบล็อกแล้ว มันจะอีเมลไปให้เอง จะตั้งเวลาให้โปรแกรมมาวนอ่าน feed แล้วส่งอีเมลมันก็พอได้ แต่มันไม่ real time และดูจะไม่ค่อยสวยเท่าไหร่ คิดไปคิดมา ก็มาลงตัวที่การเขียน plugin ให้กับ wordpress เพื่อ hook action การ publish_post น่าจะเป็นวิธีที่ elegant ที่สุด

เปิด document ของ plugin development ในเวบ wordpress ดูแล้วก็ลองเขียนแบบ dirty หน่อย ก็ได้เป็น plugin แบบปรับแต่งอะไรไม่ได้มาตัวนึง คือจริงๆ แล้วมันควรจะมี panel ของ plugin ตัวนี้มาให้แก้ได้ว่าจะให้ส่งอีเมลไปที่ address ไหน แต่ว่าขี้เกียจอ่าน document ก็เลยเขียน hardcode ไปดื้อๆ ได้ออกมาประมาณนี้

< ?php
/*
Plugin Name: Publish to Multiply
Plugin URI: http://pit.dogpositive.com/blog/
Description: Email the published post to multiply.
Author: Pittaya Sroilong
Version: 0.1
Author URI: http://pit.dogpositive.com/blog/
*/
function email_multiply($pid) {
$to = "secret_pin_at_username_dot_multiply_dot_com";
$post = get_post($pid);
if ($post->post_date == $post->post_modified) {
$subject = '=?utf-8?B?'.base64_encode($post->post_title).'?=';
$msg = $post->post_content;
$headers = "Content-Type: text/html;charset=utf8";
mail($to, $subject, $msg, $headers);
}
return $pid;
}
add_action('publish_post', 'email_multiply');
?>

เซฟไฟล์แล้วเอาไปใส่ใน wp-content/plugins/ จากนั้นไป activate ใน plugin panel เพื่อใช้งาน

ว่างๆ จะไปเยี่ยมชมก็ได้
http://pittaya.multiply.com

  • http://blog.oakyman.com/ Oakyman

    เท่ไปเลย

    ไว้ลองมั่ง

  • http://bact.blogspot.com/ bact’

    จ๊าบ จ๊าบ

  • http://blog.oakyman.com/ Oakyman

    มีปัญหาแฮะ

    ตรง
    if ($post->post_date == $post->post_modified)

    ถ้าเกิดว่าเราไป Edit Timestamp (เช่นเซ็ตให้ post นี้ เป็นเวลาในอดีต)
    มันจะไม่เข้าไปใน if รึเปล่าเนี่ย?

blog comments powered by Disqus