人的头脑太复杂,时间过得久,有时候连自己也被自己骗了,记下来才是最真实的...... 注册 | 登陆

WordPress多站点自动同步发布文章

WordPress可以利用自建API在不同站点间自动同步发布文章,支持同步主站的文章标题、内容、类型、分类、标签等到备站,分类需要在备站也有创建相同名称的分类。首先,在备站的根目录下创建post.php文件,文件代码如下:

 

PHP代码
  1. <?php   
  2. //文章接收   
  3. define('WP_USE_THEMES', false);   
  4. require_once("wp-load.php");   
  5. $key='123456'//设置启动API的密钥   
  6. if($_POST['key']==$key){     
  7.     $categorys=explode(',',$_POST['category']);     
  8.     $category=array();     
  9.     for($x=1;$x<count($categorys);$x++) {     
  10.      $category[$x-1]=get_cat_ID($categorys[$x]);     
  11.     }     
  12.     $info = array(     
  13.     'post_title' => $_POST['title'],     
  14.     'post_content' => $_POST['content'],     
  15.     'post_status' => 'publish',     
  16.     'post_author' => 1, //发布文章的作者ID,1 为管理员     
  17.     'post_date' => $_POST['date'],     
  18.     'tags_input' => $_POST['tags'],     
  19.     'post_category' => $category,     
  20.     'post_type' => $_POST['type']     
  21.     );     
  22.     wp_insert_post( $info );  }  

然后在主站当前主题的functions.php文件中添加以下代码:

 

PHP代码
  1. //文章推送   
  2. add_action('publish_post''fanly_sync_post'); //钩子,在文章发布时执行     
  3. function fanly_sync_post($post_ID) {     
  4.     $key='123456'//输入你上一步设置的密钥     
  5.     $url='https://www.yourdomain.com/post.php';//API地址,输入要接收数据的备站地址   
  6.     $post_info = get_post($post_ID);     
  7.     if ( $post_info->post_status == 'publish' && $_POST['original_post_status'] != 'publish' ) {     
  8.         $title=$_POST['post_title'];     
  9.         $content=$_POST['content'];     
  10.         $date=$_POST['aa'].'-'.$_POST['mm'].'-'.$_POST['jj'].' '.$_POST['hh'].':'.$_POST['mn'].':'.$_POST['ss'];     
  11.         $category='';     
  12.         for($x=1;$x<count($_POST['post_category']);$x++) {     
  13.           $category.=','.get_cat_name($_POST['post_category'][$x]);     
  14.         }     
  15.         $type=$_POST['post_type'];     
  16.         $tags=str_replace('、',',',$_POST['tax_input']['post_tag']);     
  17.         if($_POST['newtag']['post_tag']){     
  18.             $tags.=','.str_replace('、',',',$_POST['newtag']['post_tag']);     
  19.         }     
  20.         $data = 'key='.$key.'&title='.$title.'&content='.$content.'&date='.$date.'&category='.$category.'&type='.$type.'&tags='.$tags;     
  21.         $ch = curl_init (); //cURL模拟POST     
  22.         curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, TRUE );     
  23.         curl_setopt ( $ch, CURLOPT_POST, TRUE );     
  24.         curl_setopt ( $ch, CURLOPT_POSTFIELDS, $data );     
  25.         curl_setopt ( $ch, CURLOPT_URL, $url );     
  26.         curl_setopt ( $ch, CURLOPT_SSL_VERIFYPEER, FALSE);     
  27.         $ret = curl_exec ( $ch );     
  28.         curl_close ( $ch );     
  29.         return $ret;     
  30.    }     
  31. }  

至此,在主站发布新文章时,备站也会自动同步主站的新文章了。不过,如果后期你修改了主站的文章内容,备站是不会自动更新修改的,需要手动修改备站内容,主站文章下的评论,也不会同步到备站。本文转载自:https://www.vpsso.com/450.html

« 上一篇 | 下一篇 »

Trackbacks

点击获得Trackback地址,Encode: UTF-8

发表评论

评论内容 (必填):