鉴于很多同学一直来问为什么同步不了? 这里统一回答一下, 首先我自己是一直能同步成功的, 但是微博通的接口有问题, 所以有时候能同步有时候同步不了, 和插件没有关系哦不要再问我为什么不能同步啦 ╯﹏╰
昨天老郑说:"搞一个微博同步插件,只需要同步到微博通,标题加截取摘要加图片". 折腾一宿加一下午终于弄好了,解决了微博通官方插件for wordpress不能截取内容摘要和上传图片的问题,
先上效果图
然后上代码(晚点再补充说明,因为我现在急着去打牌了,哈哈)
2013-02-21 01:00:56 更新: 可以直接抓取文中第一张图片而不用设置缩略图了,支持外链图片和本地上传的图片,非第一次发布的文章更新永久不会同步,下面代码已经替换为新版
<?php /* Plugin Name: 微博通同步发布 Plugin URI: http://xiaohudie.net/wbto-plugin.html (参考: 原插件下载地址: http://www.wbto.cn/bbs/viewthread.php?tid=382) Description: 自动把你的博客文章同步到微博通,微博通将同步至你所绑定的各个平台。 Version: 1.0 Author: 小蝴蝶(原作者yige) Author URI: http://xiaohudie.net & http://t.qq.com/abcwuwuwu */ function wbto_install() { global $wpdb; $table_name = $wpdb->prefix."wbto"; if($wpdb->get_var("show tables like '$table_name'") != $table_name) { $sql = "CREATE TABLE " . $table_name . " (id mediumint(9) NOT NULL AUTO_INCREMENT, wbto_username VARCHAR(100) NOT NULL, wbto_password VARCHAR(100) NOT NULL, );"; } require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); dbDelta($sql); } function send_to_wbto($post_ID) { $posted = get_post($post_ID); preg_match_all('/<img[^>]+src=['"](http[^'"]+)['"].*>/isU',$posted->post_content, $image);//匹配图像格式 $p_sum = count($image[1]); if ($p_sum > 0) { $p = $image[1][0]; } if (!$p) { if (function_exists('has_post_thumbnail') && has_post_thumbnail($post_ID)) { // 如果支持特色图像(WordPress v2.9以上)并且存在特色图像,则抓特色图像 if ($image_url = wp_get_attachment_image_src(get_post_thumbnail_id($post->ID), 'post-thumbnail')) $p = $image_url[0]; } } $t1=$posted->post_date; $t2=$posted->post_modified; $diff=strtotime($t2)-strtotime($t1); if($diff>0){return;} //重要修改:加上了发布时间判断,如果文章更新,将不会同步到微博 $username = get_option('wbto_username'); $password = get_option('wbto_password'); $posted = get_post($post_ID); $image_url = $p;//重要修改:抓图像,支持外链图片和本地上传的图片,如果有特色图像则抓特色图像 $excerpt=mb_strimwidth(strip_tags($posted->post_content),0,130,'...'); //截130字的内容,因为总共140字还要留一点在最后放链接 $fields = array(); $fields['source'] = 'wordpress'; $fields['content'] = urlencode('['.$posted->post_title.']'.mb_strimwidth(strip_tags($excerpt),0,130,'...').' '.get_permalink($posted->ID)); //微博格式,效果如图,即:[标题]摘要内容+链接2014-05-07更新: 将$posted->guid改为get_permalink($posted->ID),使链接形式与自定义固定链接相同 $ch = curl_init(); if ($image_url) { //图片和文字微博的接口不同,所以要加个判断,否则会同步失败 $fields['imgurl'] =$image_url; curl_setopt($ch, CURLOPT_URL, "http://wbto.cn/api/upload.json"); //这是官方API里提供的图片同步的接口 } else { 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() {//下面输出设置页面的HTML echo '<div class="wrap">'; echo '<h2>微博通同步</h2>'; echo '<form method="post" action="options.php">'; echo wp_nonce_field('update-options'); echo '<table class="form-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 class="submit">'; echo '<input type="submit" name="submit" id="submit" class="button-primary" value="保存更改" />'; echo '</p>'; echo '</form>'; echo '</div>'; } add_action('admin_menu', 'wbto_menu');//将插件设置页面挂在后台设置中 add_action('publish_post', 'send_to_wbto');//动作在发布文章时触发 ?>
wbto-plugin is coded by http://xiaohudie.net. Any posts here is one hundred percent original, so please keep my link so as not to hurt this pretty girl. -
很感谢你的插件,但是不知道为什么一直无法抓取到图片?
文章使用的是题图
@torrace 是的,有突破的文章都同步不了,郁闷
可以自定义微博来源吗,比如自定义来自享拍微博通
wp新手
安装了你这个,同步失败,
微博通官方有个,同步正常,但只是标题+链接
不知道你这个当前版本支持wordpress 4.0么?
采集提交文章才可以,直接后台写文章根本不能发送到微博
客户端发布内容无法同步么?
我就是来找他的谢谢。