代码实现WordPress多个站点同步文章更新方法

我们在开发 WordPress 主题时,有些客户现有将 WordPress 更新的文章同步到他备用的站点中,这…

我们在开发 WordPress 主题时,有些客户现有将 WordPress 更新的文章同步到他备用的站点中,这个同学的想法比较奇特,他是希望自己备用站点的数据保存同步更新,起到备份作用,我有些不理解,为什么不采用定期数据库备份或者快照备份,居然要这样操作,不懂什么意思。

不管他要做什么,问问有没有这样的办法实现的,这里我找到网上有解决办法,让他试试看。这里有看到这个办法,记录下来,明天问问他是否可行,有空的时候我也找个测试站点试试。

1、同步站点

这里我们在需要同步到的站点目录下方一个发布文件。在另一个站点的根目录创建一个文件,命名为 E-sync-post.php,并设置用于启动 API 的 key 代码如下:

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

我们创建一个 E-sync-post.php 文件。注意要修改密钥,这个是明码,我们需要注意复杂一些,实际上这个文件如果被泄露是很不安全的,以后看看有没有办法做成加密。

2、发布站点

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

注意修改一些标注的参数,要和网站一致。我们试试是否有用。好了,就酱~ 有需要定制开发可以联系本站客服~

类别:WordPress教程

本文收集自互联网,转载请注明来源。
如有侵权,请联系 wper_net@163.com 删除。

评论 (0)COMMENT

登录 账号发表你的看法,还没有账号?立即免费 注册