Wordpress网站如何连接微信公众号自动同步发出文章?

 火... [复制链接]  641查看
 楼主| 易西 发表于 2023-5-12 23:10:45 | 显示全部楼层
本帖最后由 易西 于 2023-5-12 23:15 编辑

https://www.jianshu.com/p/91852f508eb9
参考

【php】Wordpress同步内容到微信公众号

利用官方接口实现内容的同步的几个步骤:
1.获取token接口,appid和secret可以从微信公众号后台查看。
  1. https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=你的appid&secret=你的secret";
复制代码


2.上传封面图片,获取返回的id
  1. https://api.weixin.qq.com/cgi-bin/material/add_material?access_token=$token
复制代码


3.构造上传的内容
4.发送构造的内容
https://api.weixin.qq.com/cgi-bin/material/add_news?access_token=$token

完整代码,在functions.php中添加即可。
  1. //获取微信公众号的token
  2. function GetWeixinToken(){
  3.     //$headers = array("Content-type: application/json;charset=UTF-8","Accept: application/json","Cache-Control: no-cache", "Pragma: no-cache");
  4.     $url="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=你的appid&secret=你的secret";
  5.     $curl=curl_init();
  6.     curl_setopt($curl, CURLOPT_URL, $url);
  7.     curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
  8.     curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
  9.     curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  10.     //curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
  11.     $output =curl_exec($curl);
  12.     //var_dump($output);
  13.     $result=json_decode($output);
  14.     curl_close($curl);
  15.     //var_dump($result->access_token);
  16.     // var_dump($url);
  17.     return $result->access_token;  
  18. }

  19. //构造文章信息
  20. // {
  21. //     "articles": [{
  22. //      "title": TITLE,
  23. //     "thumb_media_id": THUMB_MEDIA_ID,
  24. //     "author": AUTHOR,
  25. //     "digest": DIGEST,
  26. //     "show_cover_pic": SHOW_COVER_PIC(0 / 1),
  27. //     "content": CONTENT,
  28. //     "content_source_url": CONTENT_SOURCE_URL,
  29. //     "need_open_comment":1,
  30. //     "only_fans_can_comment":1
  31. //     }]
  32. // }
  33. function GetArticalInfo($token){
  34.     global $post;
  35.     $postid=$post->ID;
  36.     $output=get_post($postid);
  37.     //var_dump($output);
  38.     //标题
  39.     $title=$output->post_title;
  40.     //缩略图
  41.     $large_image_url = wp_get_attachment_image_src(get_post_thumbnail_id($postid),"medium");
  42.     //var_dump($large_image_url[0]);
  43.     if($large_image_url[0]!="")
  44.     {
  45.         //$file="/var/www/html/wordpress/wp-content/uploads/2020/11/2020-11-24-202040.png";
  46.         $file=str_replace("https://www.rdonly.com","/var/www/html/wordpress",$large_image_url[0]);
  47.         //var_dump($file);
  48.     }
  49.     if($file==""){
  50.         return ;
  51.     }
  52.     $thumb_media_id=UploadImageToWeixin($token,$file);
  53.     //作者
  54.     $author="Appfuns";
  55.     $digest="";
  56.     $show_cover_pic=0;

  57.     //内容
  58.     // 上传文章中的所有图片
  59.     $newcontent=GetAllImages($token,$output->post_content);
  60.     //加上网站链接地址
  61.     $link="";
  62.     $custom_fields = get_post_custom($postid);
  63.     $count=0;
  64.     foreach($custom_fields as $keys=>$values){
  65.         if ( '_' == $keys{0} )
  66.             continue;
  67.         else{
  68.             $count++;
  69.         }
  70.     }
  71.     if($count){
  72.         foreach($custom_fields as $keys=>$values){
  73.             if ( '_' == $keys{0} )
  74.                 continue;
  75.             foreach($values as $key => $value){
  76.                 $link=$link."<p><span style='background-color: rgb(0, 0, 0);color: rgb(255, 255, 255);'><strong>".$value."</strong></span></p>";
  77.             }
  78.         }
  79.     }

  80.     //var_dump($link);
  81.     $content=$newcontent.$link;
  82.    
  83.     //原文地址
  84.     $content_source_url=$output->guid;
  85.     $need_open_comment=0;
  86.     $only_fans_can_comment=0;

  87.     $arrcontent=array();
  88.     $arrcontent["title"]=$title;
  89.     $arrcontent["thumb_media_id"]=$thumb_media_id;
  90.     $arrcontent["author"]=$author;
  91.     $arrcontent["digest"]=$digest;
  92.     $arrcontent["show_cover_pic"]=$show_cover_pic;
  93.     $arrcontent["content"]=$content;
  94.     $arrcontent["content_source_url"]=$content_source_url;
  95.     $arrcontent["need_open_comment"]=$need_open_comment;
  96.     $arrcontent["only_fans_can_comment"]=$only_fans_can_comment;
  97.     $data=array("articles"=>array($arrcontent));
  98.     // var_dump($data);
  99.     return json_encode($data,JSON_UNESCAPED_UNICODE);
  100. }

  101. //获取文章中的所有图片
  102. function GetAllImages($token,$content){
  103.     preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $content, $matches);
  104.     //var_dump($matches);
  105.     for($i=0;$i<count($matches[1]);$i++){
  106.         $WeiXinSrc=UpImgToWeixinRtnUrl($token,$matches[1][$i]);
  107.         if($WeiXinSrc!=""){
  108.             $content=str_replace($matches[1][$i],$WeiXinSrc,$content);
  109.         }
  110.     }
  111.     return $content;
  112. }

  113. //上传微信返回url
  114. function UpImgToWeixinRtnUrl($token,$file){
  115.     $url="https://api.weixin.qq.com/cgi-bin/media/uploadimg?access_token=".$token;

  116.     if($file!=""){
  117.         $file=str_replace("https://www.rdonly.com","/var/www/html/wordpress",$file);
  118.         //var_dump($file);
  119.         $filedata = array(
  120.             'media'=> new CURLFile($file)
  121.         );
  122.         $curl=curl_init();
  123.         curl_setopt($curl, CURLOPT_URL, $url);
  124.         curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
  125.         curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
  126.         curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  127.         curl_setopt($curl, CURLOPT_POST, 1);
  128.         //curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
  129.         curl_setopt ($curl, CURLOPT_POSTFIELDS, $filedata);
  130.         $output =curl_exec($curl);
  131.         // var_dump($output);
  132.         $result=json_decode($output);
  133.         curl_close($curl);
  134.         var_dump($result);
  135.         return $result->url;
  136.     }else
  137.     {
  138.         return "";
  139.     }
  140.     // var_dump($url);
  141.     // return $result->media_id;
  142. }

  143. // 上传图片
  144. function UploadImageToWeixin($token,$file){
  145.     //$token=GetWeixinToken();
  146.     //$file="/var/www/html/wordpress/wp-content/uploads/2020/11/2020-11-24-202040.png";
  147.     $url="https://api.weixin.qq.com/cgi-bin/material/add_material?access_token=".$token."&type=thumb";

  148.     $filedata = array(
  149.         'media'=> new CURLFile($file)
  150.     );

  151.     $curl=curl_init();
  152.     curl_setopt($curl, CURLOPT_URL, $url);
  153.     curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
  154.     curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
  155.     curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  156.     curl_setopt($curl, CURLOPT_POST, 1);
  157.     //curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
  158.     curl_setopt ($curl, CURLOPT_POSTFIELDS, $filedata);
  159.     $output =curl_exec($curl);
  160.     // var_dump($output);
  161.     $result=json_decode($output);
  162.     curl_close($curl);
  163.     //var_dump($result->media_id);
  164.     // var_dump($url);
  165.     return $result->media_id;
  166. }

  167. //调用接口发送数据
  168. function SetWeixinArtical(){
  169.     $token=GetWeixinToken();
  170.     $data=GetArticalInfo($token);
  171.     // var_dump($data);
  172.     // $headers = array("Content-type:text/json;charset=utf-8");
  173.     $url="https://api.weixin.qq.com/cgi-bin/material/add_news?access_token=".$token;
  174.     // var_dump($url);
  175.     $curl=curl_init();
  176.     curl_setopt($curl, CURLOPT_URL, $url);
  177.     curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
  178.     curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
  179.     curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  180.     curl_setopt($curl, CURLOPT_POST, 1);
  181.     curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
  182.     curl_setopt ($curl, CURLOPT_POSTFIELDS, $data);
  183.     $output =curl_exec($curl);
  184.     // //var_dump($output);
  185.     $result=json_decode($output);
  186.     curl_close($curl);
  187.     // //var_dump($result);
  188.     // // var_dump($url);
  189.     // return $result->access_token;
  190. }
  191. add_action('publish_post','SetWeixinArtical');
复制代码


 楼主| 易西 发表于 2023-5-12 23:14:31 | 显示全部楼层
Wordpress网站如何连接微信公众号自动同步发出文章?
http://wuchai.cn/forum.php?mod=viewthread&tid=3197
(出处: 吾侪)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

邮箱|首页|小黑屋|吾侪 ( 蜀ICP备2020029307号-4 )

GMT+8, 2025-12-1 23:22 , Processed in 0.060942 second(s), 18 queries , APCu On.

Powered by Discuz! X3.5

Copyright © , 吾侪网

快速回复 返回顶部 返回列表