WordPress has a page on “Writing a Plugin” that you can refer to for all the gory details; this post is a quick demonstration of how you too can notify people of updates to your Blog via Twitter.
Add your handlers:
add_action('edit_form_advanced','notify_customers_checkbox');
add_action('save_post','notify_customers');
Add some check boxes to the “Write Post” interface:
function notify_customers_checkbox()
{
?>
<fieldset id="notify_customers" class="dbx-box">
<h3 class="dbx-handle">Notify Customers:</h3>
<div class="dbx-content">
<input type="checkbox" name="send_to_twitter" id="send_to_twitter" checked="checked" /> twitter
<input type="checkbox" name="send_to_list" id="send_to_list" checked="checked" /> email
<input type="checkbox" name="send_to_nntp" id="send_to_nntp" checked="checked" /> nntp
</div>
</fieldset>
<?php
}
Check the status of those check boxes:
function notify_customers($post_id)
{
if ( isset ( $_POST['send_to_twitter'] ) )
{ send_to_twitter($post_id); }
if (isset ( $_POST['send_to_list'] ) )
{ send_to_list($post_id); }
if (isset ( $_POST['send_to_nntp'] ) )
{ send_to_nntp($post_id); }
}
Write a method to take your post, clean it up a bit and send it off to Twitter:
function send_to_twitter($post_id)
{
$twitter_user = 'sonicnet_status';
$twitter_pass = '';
$post_url = get_permalink($post_id);
$post_title = stripslashes($_POST['post_title']);
$post_title = html_entity_decode($post_title);
$post_content = stripslashes($_POST['post_content']);
$post_content = strip_tags($post_content);
$post_content = html_entity_decode($post_content);
$twitter_message = "$post_title: $post_content";
// We only care about published posts.
// If it's an old post being updated prepend "Update" to the post.
if ( $_POST['prev_status'] == 'draft' ) //new post.
{
if($_POST['publish'] == 'Publish')
{
$xrl = file_get_contents("http://metamark.net/api/rest/simple?long_url=$post_url");
$twitter_message = substr($twitter_message , 0 , 117);
$twitter_message = "$twitter_message... $xrl";
$twitter_message = urlencode($twitter_message);
$url = 'http://twitter.com/statuses/update.xml';
$curl_handle = curl_init();
curl_setopt($curl_handle, CURLOPT_URL, "$url");
curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 2);
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl_handle, CURLOPT_POST, 1);
curl_setopt($curl_handle, CURLOPT_POSTFIELDS, "status=$twitter_message");
curl_setopt($curl_handle, CURLOPT_USERPWD, "$twitter_user:$twitter_pass");
$buffer = curl_exec($curl_handle);
curl_close($curl_handle);
}
}
}
And there you have it; you’ve just told all your Twitter followers about your latest Blog post.
You’ll note we do some other cool stuff to keep our customers in the loop; like send them E-Mail and post to Usenet, but that’s another Blog post.