无插件实现WordPress多个站点同步文章更新方法
导读:今天晚上有几个网友在群里讨论如何将WordPress更新的文章同步到他备用的站点中。这个同学的想法比较奇特,他是希望自己备用站点的数据保存同步更新,起到备份作用,老蒋有些不理解,为什么不采用定期数据库备份或者快照备份,居然要这样操作,不懂什...
今天晚上有几个网友在群里讨论如何将WordPress更新的文章同步到他备用的站点中。这个同学的想法比较奇特,他是希望自己备用站点的数据保存同步更新,起到备份作用,老蒋有些不理解,为什么不采用定期数据库备份或者快照备份,居然要这样操作,不懂什么意思。
不管他要做什么,问问有没有这样的办法实现的,这里我找到网上有解决办法,让他试试看。这里有看到这个办法,记录下来,明天问问他是否可行,有空的时候我也找个测试站点试试。
1、同步站点
这里我们在需要同步到的站点目录下方一个发布文件。
//文章接收 define('WP_USE_THEMES', false);
require_once("wp-load.php");
$key='itbulu.com';
//设置启动API的密钥if($_POST['key']==$key){
$categorys=explode(',',$_POST['category']);
$category=array();
for($x=1;
$xcount($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 );
}
我们创建一个publish.php文件。注意要修改密钥,这个是明码,我们需要注意复杂一些,实际上这个文件如果被泄露是很不安全的,以后看看有没有办法做成加密。
2、发布站点
//发布文章推送add_action('publish_post', 'wp_sync_posts');
function wp_sync_posts($post_ID) {
$key='itbulu.com';
//和上面密钥一样 $url='http://www.域名.com/publish.php';
//我们要同步的网站域名地址和上面PHP文件 $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;
$xcount($_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;
}
}
注意修改一些标注的参数,要和网站一致。
这样,我们试试是否有用。后面老蒋准备也试试。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 无插件实现WordPress多个站点同步文章更新方法
本文地址: https://pptw.com/jishu/665842.html