wordpress 内容备份镜像站点建立方法及注意事项
作为虾米级站长一枚,实则是不懂代码的菜鸟,由于自己的站点是小水管主机,而且稳定性也难以保障,在很多访客的建议下,也想建立一个内容镜像站点,以实现当主站的主机维护时,能够有一个备用站点让访客访问。
最先我是想能够有一个共用的数据库可以给两个站点一起使用,但百度查了资料后,发现这对于虚拟主机建站来说好像不适用。
直到找到了以下的代码,可以实现源站发表文章时,自动在镜像站点也发表出来。
第一步,在镜像站根目录创建一个命名为 post.php 的 php 文件,代码内容:
//以下为代码正文… <?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 ); }
第二步,在主站主题的 functions.php 文件的最后一个?>前加入已下代码,并设置 key,修改 API 地址。
//文章推送 add_action('publish_post', 'fanly_sync_post'); //钩子,在文章发布时执行 function fanly_sync_post($post_ID) { $key='123456'; //输入你设置的密钥 $url='http://3838521.com/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; } }
这样一来,在主站发表一篇文章后,镜像站点也就会发表出来一篇文章了,但也会有一些意外情况,比如不是马上发表出来,而是显示计划中,正常隔几分钟后会发表好,但也会有发表失败,需要在后台文章管理中,选择该发表失败文章,状态修改为已发布,更新即可。
一些意外情况的解决:
问题 1,由于主题升级后,functions.php 代码会被置换。用以上方法实现的内容镜像每次在主题升级后都需要修改 functions.php 代码,这会造成麻烦。
所以有如下解决办法,代码如下:
<?php /* Plugin Name: 小插件 Description: 给主题添加点小功能 Author: 云落 */ //文章推送 add_action('publish_post', 'fanly_sync_post'); //钩子,在文章发布时执行 function fanly_sync_post($post_ID) { $key='123456'; //输入你设置的密钥 $url='http://3838521.com/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; } } ?>
复制上面的代码,最好是用 Notepad ++等工具另存为 php 文件,打包成 zip 文档,在 wordpress 插件安装后台上传,安装并启用。
这样就是一个插件形式存在了,主题升级后不再有影响。
问题 2,有些主题编辑器是支持密码可见付费可见等短代码的,但短代码在编辑模式跟输出模式是不一样的,到了镜像站的内容会是输出模式,有可能会输出异常。
我的解决办法也是采用小插件的办法,对这些代码进行一个自动修改。代码如下:
<?php /* Plugin Name: 小插件 Description: 给主题添加点小功能 Author: 云落 */ //内容文字替换 function wpdaxue_replace_text($text){ $replace = array( // '原始文字' => '替换为这些' '\"20\"]' => '"20"]', '\"10\"]' => '"10"]', '\"50\"]' => '"50"]' ); $text = str_replace(array_keys($replace), $replace, $text); return $text; } add_filter('the_content', 'wpdaxue_replace_text'); //正文 add_filter('the_excerpt', 'wpdaxue_replace_text'); //摘要 add_filter('comment_text', 'wpdaxue_replace_text'); //评论 ?>
在此文中,使用到的代码都是万能的博主们提供的,我只是对其进行了一个有效的整合,来实现我的需求,在此感谢共享精神的博主们的辛勤付出!
经验分享,欢迎转载,但不得修改内容,谢谢!
代码提供
感谢
@泪雪建站
@极客公园
@WordPress大学

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
LeetCode 394:字符串解码 Decode String
题目: 给定一个经过编码的字符串,返回它解码后的字符串。Given an encoded string, return its decoded string. 编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次。注意 k 保证为正整数。The encoding rule is: k[encoded_string], where the encoded_string inside the square brackets is being repeated exactly k times. Note that k is guaranteed to be a positive integer. 你可以认为输入字符串总是有效的;输入字符串中没有额外的空格,且输入的方括号总是符合格式要求的。You may assume that the input string is always valid; No extra white spaces, square brackets are well-formed, etc. 此外,你可以...
- 下一篇
Python数据处理之导入导出excel数据
本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点 Python的一大应用就是数据分析了,而数据分析中,经常碰到需要处理Excel数据的情况。这里做一个Python处理Excel数据的总结,基本受用大部分情况。相信以后用Python处理Excel数据不再是难事儿! Python处理Excel数据需要用到2个库:xlwt 和 xlrd。xlwt库负责将数据导入生成Excel表格文件,而 xlrd库则负责将Excel表格中的数据取出来。 xlwt库将数据导入Excel 将数据写入一个Excel文件 wb = xlwt.Workbook() # 添加一个表 ws = wb.add_sheet('test') # 3个参数分别为行号,列号,和内容 # 需要注意的是行号和列号都是从0开始的 ws.write(0, 0, '第1列') ws.write(0, 1, '第2列') ws.write(0, 2, '第3列') # 保存excel文件 wb.save('./test.xls') 可以看到,用xlwt库操作非常简单,基本就...
相关文章
文章评论
共有0条评论来说两句吧...