纯代码实现WordPress文章同步到微博头条文章

 2019-07-18 07:35:38  270 人阅读  34 条评论

昨天推荐『WordPress 文章同步到新浪微博普通和头条文章插件』就说到 boke112 导航结合祭夜 blog 分享的《[API 使用代码]WordPress 自动同步到新浪微博头条文章》和张戈博客分享的『WordPress 发布文章自动同步到新浪微博(带特色图片)』试着折腾了一下,目前已经成功实现 WordPress 站点发布文章可勾选是否同步到新浪微博头条文章。同步到头条文章的效果如下(或关注):

纯代码实现WordPress文章同步到微博头条文章 - 第1张 - boke112导航(boke112.com)

温馨提示:想要实现 WordPress 站点文章自动同步到微博头条文章,需要拥有应用 appkey 和头条文章高级写入接口权限,两者都成功申请之后再往下折腾会比较好。

有些站长不喜欢插件实现,所以就问到我是否可以分享实现 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 导航是根据自己的实际情况,在以上代码的基础上增加了一个开关,即是在编辑文章的时候勾选“推送”后才会推送到微博头条,毕竟不是每一篇文章都适合推送的。具体见下图:

纯代码实现WordPress文章同步到微博头条文章 - 第2张 - boke112导航(boke112.com)

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、微博登录用户名和密码是否填写正确,头条文章封面代码是否修改正确等。

您可能感兴趣的文章

文章标签: ,  
本文地址:https://boke112.com/7007.html
版权声明:本文为原创文章,版权归  所有,欢迎分享本文,转载请保留出处!
©boke112导航,本站推荐使用:阿里云 ECS服务器等云产品服务,国外免备案主机建议使用:老薛主机

阿里云专题 腾讯云专题虚拟主机专题WPS专题

 发表评论

大笑表情偷笑表情鼓掌表情思考表情疑问表情抠鼻表情抓狂表情晕表情黑线表情流汗表情流泪表情囧表情衰表情围观表情OK表情牛表情

  1. 去看你博客
    去看你博客 @回复

    我一般玩微博的少,都是逛逛。

  2. 叶忠文博客
    叶忠文博客 @回复

    打理的真的很不错你网站

  3. 闲鱼
    闲鱼 @回复

    [大笑] 不错,用上了,又能省时间去发微博了

    • 懿古今
      懿古今2019-08-03 23:23  回复

      @闲鱼[大笑] 我的现在就偶尔同步一篇文章过去,感觉挺好的,而且微博头条文章可以保留外链,不添加nofollow挺给力的

  4. 少羽
    少羽 @回复

    之前折腾过,后来折腾忘记了 [大笑] 看到这篇文章瞬间心血来潮我要去试试 [抓狂]

    • 懿古今
      懿古今2019-08-01 17:25  回复

      @少羽微博头条文章可以带外链,不会添加nofollow标签,还是挺不错的。

  5. 蜂蜜网
    蜂蜜网 @回复

    感觉还是有用的

  6. 爱游博客
    爱游博客 @回复

    不错,老哥不错啊还弄了个向公众号引流的,关注才能获取密码。
    这个同步文章也不错,还是能增加流量的。

  7. wordpress百宝箱
    wordpress百宝箱 @回复

    已经不用微博好几年。。。

  8. 云顶天
    云顶天 @回复

    666,适合搞自媒体和资讯站的~

  9. 刘少技术博客
    刘少技术博客 @回复

    很不错的功能,但是不知道为什么就是折腾不成功,我的微信号有应用 appkey 和头条文章高级写入接口权限,但是最后有一步是上线,不知道需不需要也要成功,后台部署后没有任何问题

    • 懿古今
      懿古今2019-07-18 14:46  回复

      @刘少技术博客微信号?这个是需要在微博开放平台成功上线应用之后,然后填写appkey和相关信息后才能成功。不成功的话,可以参考《WordPress发布文章同步到新浪微博失败的解决办法》这篇文章的DeBUG 方法试试,记得将其中的代码改为同步头条文章代码。

      • 刘少技术博客

        @懿古今额额,尴尬,微博号,就是微博开放平台,那我就剩余最后一步上线~静静等上线成功吧~

      • MAY的SEO博客
        MAY的SEO博客2019-07-18 14:52  回复

        @懿古今我和朋友都试了,有没能成功。“是否推送微博头条”这个出来了,但是就是不同步到微博中。

        • 懿古今
          懿古今2019-07-18 15:06  回复

          @MAY的SEO博客发布文章的时候或者定时发布的时候正常,或者你可以参考《WordPress发布文章同步到新浪微博失败的解决办法》这篇文章的DeBUG 方法试试,记得将其中的代码改为同步头条文章代码。

  10. MAY的SEO博客
    MAY的SEO博客 @回复

    感谢分享,赶紧试试。 [强]

  11. 猫鼬
    猫鼬 @回复

    这个可以有,可以折腾着试试。 [抠鼻]

  12. 技术宅
    技术宅 @回复

    这个可以有!微博免费的外链 [偷笑]

  13. Jane博客
    Jane博客 @回复

    以前用过插件,感觉网页加载变慢,卸载了

    • 懿古今
      懿古今2019-07-18 11:27  回复

      @Jane博客不知道你用的原理是什么,这个同步到微博头条文章就是在我们发布文章的时候通过API推送过去而已,前端网页不会加载东西,跟网页加载变慢没什么关系。

  14. SKY8G网
    SKY8G网 @回复

    这个借口不错呀。以后可以同步Facebook,推特等等呀。

  15. 智能家居指南
    智能家居指南 @回复

    很好的功能 [强] ,试一下

  16. 明月登楼
    明月登楼 @回复

    记得张戈博客分享过!我也用过一阵子!

    • 懿古今
      懿古今2019-07-18 08:49  回复

      @明月登楼张戈博客分享的是同步到新浪微博,旧接口,现在已经失效了。本文说的是同步到新浪微博头条文章,接口不一样,小部分代码不一样