相信很多朋友都在使用微博通(享拍)管理自己的各个平台上的微博,享拍微博通还提供了开放API,为wordpress通过享拍微博通同步自己的各个微博提供了很大的帮助。其实在同步方面,个人更喜欢follow5的同步,因为它可以同步到更多的领域。好了,本文介绍wordpress的微博通插件,并对插件做适当修改,使微博同步更有操控性。
本文提供的插件代码具有以下功能:
1、发布文章时同时发布一条微博,格式为“《标题》可控内容...链接”;
2、可控内容指:如果你愿意,自己利用wordpress每篇文章的自定义栏目对可控内容进行编辑;如果你比较崇尚方便,可以不做任何操作,直接发布文章,插件会截取文章前80个字作为可控内容;
3、更新文章时并不会重复发布微博,而是需要删除其中的wbto自定义栏目,并且可以修改weibo自定义栏目来自定义可控内容。
你可以通过互联网获取享拍微博通(http://www.wbto.cn)原始的wordpress同步插件它只能实现发布文章时同步微博,格式为“《标题》链接”,而且这个链接可能是固定链接,因为你可能用writer等其他客户短写文章。
好了,接下来放送插件:
下载地址:http://dl.dbank.com/c07sijrbvm 下面源代码为最终版,实现了自定义微博内容,文章摘要,特色图片传送等功能
<?php
/*
Plugin Name: 微博通同步发布
Plugin URI: http://www.wbto.cn
Description: 自动把你的博客文章同步到微博通,微博通将同步至你所绑定的各个平台。
Version: 1.0
Author: frustigor <frustigor@163.com>
Author URI: http://www.utubon.com/wordpress-custom-fields-synchronize-weibo-wbto/
Date: 2011年7月11日
*/
function send_to_wbto($post_ID) {
$username = get_option('wbto_username');
$password = get_option('wbto_password');
$posted = get_post($post_ID);$fields = array();
$excerpt=stripslashes(get_option('weibo'));
if(!$excerpt)
//$excerpt=get_the_excerpt($post_ID);
$excerpt=$posted->post_excerpt;
if(!$excerpt)$excerpt=mb_strimwidth(strip_tags($posted->post_content),0,150,'...');
$url=$posted->guid;
if(!$url)$url=get_bloginfo('url').'/?p='.$post_ID;
$post_thumbnail_id = get_post_thumbnail_id( $post_ID );
$post_thumbnail_src = wp_get_attachment_image_src($post_thumbnail_id,'Full');
$fields['source'] = 'wordpress';
$fields['content'] = urlencode($posted->post_title.'【'.$url.'】'.mb_strimwidth(strip_tags($excerpt),0,150,'...'));
$fields['imgurl'] = $post_thumbnail_src[0];
//详见http://www.wbto.cn/wiki/index.php/%E9%A6%96%E9%A1%B5$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://wbto.cn/api/update.json");
curl_setopt($ch, CURLOPT_USERPWD, "$username:$password");
curl_setopt($ch, CURLOPT_FAILONERROR, TRUE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,TRUE);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
$result = curl_exec($ch);
curl_close($ch);
}
function wbto_menu() {
add_options_page('微博通同步设置', '微博通同步', 8, __FILE__, 'wbto_options');
}function wbto_options() {
echo '<div>';
echo '<h2>微博通同步</h2>';echo '<form method="post" action="options.php">';
echo wp_nonce_field('update-options');echo '<table>';
echo '<tr valign="top">';
echo '<th scope="row">用户名 <a href="http://www.wbto.cn/?app=wp">注册</a></th>';
echo '<td><input type="text" name="wbto_username" value="'.get_option('wbto_username').'" /></td>';
echo '</tr>';echo '<tr valign="top">';
echo '<th scope="row">密码</th>';
echo '<td><input type="password" name="wbto_password" value="'.get_option('wbto_password').'" /></td>';
echo '</tr>';echo '</table>';
echo '<input type="hidden" name="action" value="update" />';
echo '<input type="hidden" name="page_options" value="wbto_username,wbto_password" />';echo '<p>';
echo '<input type="submit" name="submit" id="submit" value="保存更改" />';
echo '</p>';echo '</form>';
echo '</div>';
}
function if_send_weibo($post_ID){
$wbto = get_post_meta($post_ID, 'wbto', true);
if($wbto) return;
send_to_wbto($post_ID);
add_post_meta($post_ID, 'wbto', '本条微博已经同步到微博通,如果你要更新微博,可以删除本定义栏目,重新撰写weibo栏目,然后更新文章即可。', true);
}
add_action('admin_menu', 'wbto_menu');
add_action('publish_post', 'if_send_weibo');
?>
将上面的代码拷贝到wbto.php文件,上传到plugins目录下,进入后台设置自己在微博通的用户名密码。
如何发布微博:
1、直接发布文章;
2、不直接发布,而是设置一项自定义栏目weibo,并将你想发布的信息写入其自定义栏目值中,然后发布文章;
3、更新:更新文章时你会发现多了一项wbto的自定义栏目,这是用来标记是否已经发送过该微博的,如果不管它,直接更新文章,那么不会发送微博,如果将wbto这个自定义删除,就会再发一条微博,此时你可以修改下方的weibo自定义栏目,写更新微博的内容。<完>
你好,你的这个问题可能是由于从本站拷贝过去的时候字符以中文字符的形式被拷贝过去,拷贝之后应该做适当的检查,简单的方法是将文本拷贝到文本编辑器中,然后使用文本编辑器的查找替换功能,查找文中的”“”(即中文的双引号)替换为”(英文的双引号),同时以同样的方法替换单引号。如果还出现这样的问题,请再留言!
博主,我安装你这个插件后,激活不成功。错误提示:
插件无法被启用因为触发了一个严重错误。
Parse error: syntax error, unexpected ‘?’ in /home/saydamn/public_html/wp-content/plugins/wbto/wbto.php on line 19
下面是第19行,我不懂php,请帮忙一下,谢谢先!
$fields[‘content’]=’《’.get_the_title($post_ID).’》’.get_post_meta($post_ID, ‘weibo’, true).get_option(‘siteurl’).’/?p=’.$post_ID;