今天晚上有几个网友在群里讨论如何将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;$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 ); }
我们创建一个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;$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; } }
注意修改一些标注的参数,要和网站一致。
这样,我们试试是否有用。后面蜗牛准备也试试。
评论前必须登录!
立即登录 注册