昨天推荐『WordPress 文章同步到新浪微博普通和头条文章插件』就说到 boke112 导航结合祭夜 blog 分享的《[API 使用代码]WordPress 自动同步到新浪微博头条文章》和张戈博客分享的『WordPress 发布文章自动同步到新浪微博(带特色图片)』试着折腾了一下,目前已经成功实现 WordPress 站点发布文章可勾选是否同步到新浪微博头条文章。同步到头条文章的效果如下(或关注):
有些站长不喜欢插件实现,所以就问到我是否可以分享实现 WordPress 文章同步到微博头条文章的代码。其实根据祭夜 blog 分享的代码就已经满足要求了,下面先贴出他所分享的代码:
/** * WordPress 同步文章到新浪微博头条文章 By 无主题博客 * 完善修正 By 祭夜 * 修正内容: * 1.部分代码错误 * 2.修复同步到头条文章时 HTML 代码被去掉的问题 * 3.增加头条文章封面 * 4.添加博客文章的标签关联到新浪话题 * 原文地址: http://wuzhuti.cn/2715.html(原站已停运) */ function post_to_sina_weibo_toutiao($post_ID) { //ini_set('display_errors', true); if(wp_is_post_revision($post_ID)) return; //修订版本(更新)不发微博 $get_post_info = get_post($post_ID); $get_post_centent = get_post($post_ID)->post_content; $get_post_title = get_post($post_ID)->post_title; if ($get_post_info->post_status == 'publish' && $_POST['original_post_status'] != 'publish') { $appkey = 'App Key'; //App Key $username = '用户名'; //用户名 $userpassword = '密码'; //密码 $request = new WP_Http; /* 获取文章标签关键词*/ $tags = wp_get_post_tags($post_ID); foreach ($tags as $tag ) { $keywords = $keywords.'#'.$tag->name."#"; } $status = '【' . strip_tags($get_post_title) . '】 ' . mb_strimwidth(strip_tags(apply_filters('the_content', $get_post_centent)) , 0, 132, ' '); $api_url = 'https://api.weibo.com/proxy/article/publish.json'; $body = array( 'title' => strip_tags($get_post_title), //头条的标题 'content' => get_post($post_ID)->post_content.' 原文地址:' . get_permalink($post_ID), //头条的正文 'cover' => mmimg($post_ID), //头条的封面 'summary' => mb_strimwidth(strip_tags(apply_filters('the_content', $get_post_centent)) , 0, 110, '...'), //头条的导语 'text' => mb_strimwidth(strip_tags(apply_filters('the_content', $get_post_centent)) , 0, 110, $status).$keywords.'原文地址:' . get_permalink($post_ID), //微博的内容 'source' => $appkey ); $headers = array('Authorization' => 'Basic ' . base64_encode("$username:$userpassword")); $result = $request->post($api_url, array('body' => $body,'headers' => $headers)); logInfo($result['body']); } } add_action('publish_post', 'post_to_sina_weibo_toutiao', 0); //给发布文章增加一个分享微博头条文章的动作 //获取封面 function catch_that_image($postID){ $first_img = ''; ob_start(); ob_end_clean(); $output = preg_match_all('/<img.+src=\"?(.+\.(jpg|gif|bmp|bnp|png))\"?.+>/i',get_post($postID)->post_content,$matches); $first_img = $matches[1][0]; //将文章第一张图片的地址赋值给$first_img if(empty($first_img)){ //文章第一张图为空,也就是整篇文章没有图片,将默认设置的图片的地址赋值给$first_img $popimg = git_get_option('git_sina_weibo_cover'); $first_img = $popimg; } return $first_img; } function mmimg($postID){ $cti = catch_that_image($postID); //得到$first_img 的值,并赋值给$cti $showimg = $cti; //将$cti 的值赋值给$showimg has_post_thumbnail(); if(has_post_thumbnail()){ //判断是否有特色图片,有则将$showimg 的值替换为特色图片的地址,否则不变 $thumbnail_image_url = wp_get_attachment_image_src(get_post_thumbnail_id(),'thumbnail'); $shareimg = $thumbnail_image_url[0]; } else{ $shareimg = $showimg; } ; return $shareimg; } //调用代码:mmimg($post_ID) //写日志函数 function logInfo($msg) { $logSwitch = 1; // 日志开关:1 表示打开,0 表示关闭 $logFile = '/tmp/sync_weibo.log'; // 日志路径 if ($logSwitch == 0 ) return; date_default_timezone_set('Asia/Shanghai'); file_put_contents($logFile, date('[Y-m-d H:i:s]: ') . $msg . PHP_EOL, FILE_APPEND); return $msg; }
说明:以上代码必须修改:19,20,21,55 行。建议修改:72 行(正常使用请关闭,异常时请打开)。以上有些代码对方是从主题选项中获取,比如第 55 行,所以建议大家在使用代码的时候检查仔细,把比较个性化的代码改为适合自己使用的代码,并不是直接复制粘贴就能使用哦。
以上代码来自@祭夜 blog 《[API 使用代码]WordPress 自动同步到新浪微博头条文章》
boke112 导航是根据自己的实际情况,在以上代码的基础上增加了一个开关,即是在编辑文章的时候勾选“推送”后才会推送到微博头条,毕竟不是每一篇文章都适合推送的。具体见下图:
boke112 导航目前使用的发布文章自动推送到新浪微博头条文章的代码如下:
⊙︿⊙此处内容已被隐藏,请输入密码查看内容。
⊙▽⊙关注本站微信公众号回复关键字 7007 可获取密码。
代码说明:
1. 第 39~41 行代码请修改为自己的。
2. 第 109~127 行代码是头条文章封面图,默认获取指定缩略图,没有就获取文章第一张图片,也没有就获取随机图片,建议大家根据自己所使用的主题进行修改,或者直接删除第 109~127 行代码并将第 52 行代码中的 catch_images($post_ID)改为自己主题的缩略图函数。
3. 第 43~46 行代码是同步头条文章时发布到新浪微博的代码,可根据自己站点情况修改,默认是 boke112 导航当前使用的格式,具体可以加 boke112 导航微博(传送门)看效果图,或看本文第一张图片。
4. 第 63 行代码意思就是 post 类型的文章发布时自动同步到头条文章,如果你的 WordPress 站点还有其他自定义类型(如 gonggao),那么就自行在它的下方添加以下代码即可:
add_action('publish_gonggao', 'post_to_sina_weibo', 0);
目前,boke112 导航使用以上代码实现同步到新浪微博头条文章的功能已经持续今天,不管是直接发布的文章还是定时发布的文章,只要在编辑文章时勾选了“推送”到头条文章的,都能成功推送。如果遇到不能推送的,请检查看看 appkey、微博登录用户名和密码是否填写正确,头条文章封面代码是否修改正确等。
本文纯代码如何实现WordPress文章同步到微博头条文章到此结束。如果要给完美人生一个定义,那就是惬意。如果要给惬意一个定义,那就是三五知己谈笑风生。小编再次感谢大家对我们的支持!