本帖最后由 易西 于 2023-5-12 23:15 编辑
https://www.jianshu.com/p/91852f508eb9
参考
【php】Wordpress同步内容到微信公众号
利用官方接口实现内容的同步的几个步骤:
1.获取token接口,appid和secret可以从微信公众号后台查看。
- https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=你的appid&secret=你的secret";
复制代码
2.上传封面图片,获取返回的id
- 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中添加即可。
- //获取微信公众号的token
- function GetWeixinToken(){
- //$headers = array("Content-type: application/json;charset=UTF-8","Accept: application/json","Cache-Control: no-cache", "Pragma: no-cache");
- $url="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=你的appid&secret=你的secret";
- $curl=curl_init();
- curl_setopt($curl, CURLOPT_URL, $url);
- curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
- curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
- curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
- //curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
- $output =curl_exec($curl);
- //var_dump($output);
- $result=json_decode($output);
- curl_close($curl);
- //var_dump($result->access_token);
- // var_dump($url);
- return $result->access_token;
- }
- //构造文章信息
- // {
- // "articles": [{
- // "title": TITLE,
- // "thumb_media_id": THUMB_MEDIA_ID,
- // "author": AUTHOR,
- // "digest": DIGEST,
- // "show_cover_pic": SHOW_COVER_PIC(0 / 1),
- // "content": CONTENT,
- // "content_source_url": CONTENT_SOURCE_URL,
- // "need_open_comment":1,
- // "only_fans_can_comment":1
- // }]
- // }
- function GetArticalInfo($token){
- global $post;
- $postid=$post->ID;
- $output=get_post($postid);
- //var_dump($output);
- //标题
- $title=$output->post_title;
- //缩略图
- $large_image_url = wp_get_attachment_image_src(get_post_thumbnail_id($postid),"medium");
- //var_dump($large_image_url[0]);
- if($large_image_url[0]!="")
- {
- //$file="/var/www/html/wordpress/wp-content/uploads/2020/11/2020-11-24-202040.png";
- $file=str_replace("https://www.rdonly.com","/var/www/html/wordpress",$large_image_url[0]);
- //var_dump($file);
- }
- if($file==""){
- return ;
- }
- $thumb_media_id=UploadImageToWeixin($token,$file);
- //作者
- $author="Appfuns";
- $digest="";
- $show_cover_pic=0;
- //内容
- // 上传文章中的所有图片
- $newcontent=GetAllImages($token,$output->post_content);
- //加上网站链接地址
- $link="";
- $custom_fields = get_post_custom($postid);
- $count=0;
- foreach($custom_fields as $keys=>$values){
- if ( '_' == $keys{0} )
- continue;
- else{
- $count++;
- }
- }
- if($count){
- foreach($custom_fields as $keys=>$values){
- if ( '_' == $keys{0} )
- continue;
- foreach($values as $key => $value){
- $link=$link."<p><span style='background-color: rgb(0, 0, 0);color: rgb(255, 255, 255);'><strong>".$value."</strong></span></p>";
- }
- }
- }
- //var_dump($link);
- $content=$newcontent.$link;
-
- //原文地址
- $content_source_url=$output->guid;
- $need_open_comment=0;
- $only_fans_can_comment=0;
- $arrcontent=array();
- $arrcontent["title"]=$title;
- $arrcontent["thumb_media_id"]=$thumb_media_id;
- $arrcontent["author"]=$author;
- $arrcontent["digest"]=$digest;
- $arrcontent["show_cover_pic"]=$show_cover_pic;
- $arrcontent["content"]=$content;
- $arrcontent["content_source_url"]=$content_source_url;
- $arrcontent["need_open_comment"]=$need_open_comment;
- $arrcontent["only_fans_can_comment"]=$only_fans_can_comment;
- $data=array("articles"=>array($arrcontent));
- // var_dump($data);
- return json_encode($data,JSON_UNESCAPED_UNICODE);
- }
- //获取文章中的所有图片
- function GetAllImages($token,$content){
- preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $content, $matches);
- //var_dump($matches);
- for($i=0;$i<count($matches[1]);$i++){
- $WeiXinSrc=UpImgToWeixinRtnUrl($token,$matches[1][$i]);
- if($WeiXinSrc!=""){
- $content=str_replace($matches[1][$i],$WeiXinSrc,$content);
- }
- }
- return $content;
- }
- //上传微信返回url
- function UpImgToWeixinRtnUrl($token,$file){
- $url="https://api.weixin.qq.com/cgi-bin/media/uploadimg?access_token=".$token;
- if($file!=""){
- $file=str_replace("https://www.rdonly.com","/var/www/html/wordpress",$file);
- //var_dump($file);
- $filedata = array(
- 'media'=> new CURLFile($file)
- );
- $curl=curl_init();
- curl_setopt($curl, CURLOPT_URL, $url);
- curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
- curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
- curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
- curl_setopt($curl, CURLOPT_POST, 1);
- //curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
- curl_setopt ($curl, CURLOPT_POSTFIELDS, $filedata);
- $output =curl_exec($curl);
- // var_dump($output);
- $result=json_decode($output);
- curl_close($curl);
- var_dump($result);
- return $result->url;
- }else
- {
- return "";
- }
- // var_dump($url);
- // return $result->media_id;
- }
- // 上传图片
- function UploadImageToWeixin($token,$file){
- //$token=GetWeixinToken();
- //$file="/var/www/html/wordpress/wp-content/uploads/2020/11/2020-11-24-202040.png";
- $url="https://api.weixin.qq.com/cgi-bin/material/add_material?access_token=".$token."&type=thumb";
- $filedata = array(
- 'media'=> new CURLFile($file)
- );
- $curl=curl_init();
- curl_setopt($curl, CURLOPT_URL, $url);
- curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
- curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
- curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
- curl_setopt($curl, CURLOPT_POST, 1);
- //curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
- curl_setopt ($curl, CURLOPT_POSTFIELDS, $filedata);
- $output =curl_exec($curl);
- // var_dump($output);
- $result=json_decode($output);
- curl_close($curl);
- //var_dump($result->media_id);
- // var_dump($url);
- return $result->media_id;
- }
- //调用接口发送数据
- function SetWeixinArtical(){
- $token=GetWeixinToken();
- $data=GetArticalInfo($token);
- // var_dump($data);
- // $headers = array("Content-type:text/json;charset=utf-8");
- $url="https://api.weixin.qq.com/cgi-bin/material/add_news?access_token=".$token;
- // var_dump($url);
- $curl=curl_init();
- curl_setopt($curl, CURLOPT_URL, $url);
- curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
- curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
- curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
- curl_setopt($curl, CURLOPT_POST, 1);
- curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
- curl_setopt ($curl, CURLOPT_POSTFIELDS, $data);
- $output =curl_exec($curl);
- // //var_dump($output);
- $result=json_decode($output);
- curl_close($curl);
- // //var_dump($result);
- // // var_dump($url);
- // return $result->access_token;
- }
- add_action('publish_post','SetWeixinArtical');
复制代码
|