代码实现WordPress多个站点同步文章更新方法
我们在开发 WordPress 主题时,有些客户现有将 WordPress 更新的文章同步到他备用的站点中,这…
我们在开发 WordPress 主题时,有些客户现有将 WordPress 更新的文章同步到他备用的站点中,这个同学的想法比较奇特,他是希望自己备用站点的数据保存同步更新,起到备份作用,我有些不理解,为什么不采用定期数据库备份或者快照备份,居然要这样操作,不懂什么意思。
不管他要做什么,问问有没有这样的办法实现的,这里我找到网上有解决办法,让他试试看。这里有看到这个办法,记录下来,明天问问他是否可行,有空的时候我也找个测试站点试试。
1、同步站点
这里我们在需要同步到的站点目录下方一个发布文件。在另一个站点的根目录创建一个文件,命名为 E-sync-post.php,并设置用于启动 API 的 key 代码如下:
-
<?php
-
/*
-
文章发表后同步到另一个站点(接收)
-
*/
-
define('WP_USE_THEMES', false);
-
require_once("wp-load.php");
-
$key='123456'; //设置启动API的密钥
-
if($_POST['key']==$key){
-
$categorys=explode(',',$_POST['category']);
-
$category=array();
-
for($x=1;$x<count($categorys);$x++) {
-
$category[$x-1]=get_cat_ID($categorys[$x]);
-
}
-
$info = array(
-
'post_title' => $_POST['title'],
-
'post_content' => $_POST['content'],
-
'post_status' => 'publish',
-
'post_author' => 1, //发布文章的作者ID,1 为管理员
-
'post_date' => $_POST['date'],
-
'tags_input' => $_POST['tags'],
-
'post_category' => $category,
-
'post_type' => $_POST['type']
-
);
-
wp_insert_post( $info );
-
}
-
?>
我们创建一个 E-sync-post.php 文件。注意要修改密钥,这个是明码,我们需要注意复杂一些,实际上这个文件如果被泄露是很不安全的,以后看看有没有办法做成加密。
2、发布站点
-
/*
-
文章发表后同步到另一个站点(发送)
-
*/
-
add_action('publish_post', 'E_sync_post'); //钩子,在文章发布时执行
-
function E_sync_post($post_ID) {
-
$key='123456'; //输入你设置的密钥
-
$url='http://www.22vd.com/E-sync-post.php';//API地址
-
$post_info = get_post($post_ID);
-
if ( $post_info->post_status == 'publish' && $_POST['original_post_status'] != 'publish' ) {
-
$title=$_POST['post_title'];
-
$content=$_POST['content'];
-
$date=$_POST['aa'].'-'.$_POST['mm'].'-'.$_POST['jj'].' '.$_POST['hh'].':'.$_POST['mn'].':'.$_POST['ss'];
-
$category='';
-
for($x=1;$x<count($_POST['post_category']);$x++) {
-
$category.=','.get_cat_name($_POST['post_category'][$x]);
-
}
-
$type=$_POST['post_type'];
-
$tags=str_replace('、',',',$_POST['tax_input']['post_tag']);
-
if($_POST['newtag']['post_tag']){
-
$tags.=','.str_replace('、',',',$_POST['newtag']['post_tag']);
-
}
-
$data = 'key='.$key.'&title='.$title.'&content='.$content.'&date='.$date.'&category='.$category.'&type='.$type.'&tags='.$tags;
-
$ch = curl_init (); //cURL模拟POST
-
curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, TRUE );
-
curl_setopt ( $ch, CURLOPT_POST, TRUE );
-
curl_setopt ( $ch, CURLOPT_POSTFIELDS, $data );
-
curl_setopt ( $ch, CURLOPT_URL, $url );
-
curl_setopt ( $ch, CURLOPT_SSL_VERIFYPEER, FALSE);
-
$ret = curl_exec ( $ch );
-
curl_close ( $ch );
-
return $ret;
-
}
-
}
注意修改一些标注的参数,要和网站一致。我们试试是否有用。好了,就酱~ 有需要定制开发可以联系本站客服~
类别:WordPress教程、
本文收集自互联网,转载请注明来源。
如有侵权,请联系 wper_net@163.com 删除。
还没有任何评论,赶紧来占个楼吧!