找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2177|回复: 0

[分享] Wordpress:创建备份及恢复选项设置小插件

[复制链接]
发表于 2016-1-8 08:54:03 | 显示全部楼层 |阅读模式 来自 河南省郑州市
后台选项是在WordPress中最重要的数据,它们存储着您的博客的各种配置设置。这些选项可以改变WordPress的显示。因此,如果我们没有记住每一个精确值,如何配置他们回到以前的状态?
今天,要告诉你如何为WordPress博客创建一个简单的备份/恢复功能。有了这个功能,你可以将所有的选项配置备份到另一个地方,可以在任何时间恢复,无需重新配置它们。
在一般情况下,此功能将有两部分实现,一个是数据库备份导出部分和恢复数据的导入部分。下面,就一步一步的带大家一起做这个简单插件。
步骤一:建立一个ieoption.php的文件,下面的操作均在此文件内,根据wordpress官方插件的描述建立插件的头部:
  1. /*
  2. Plugin Name: I/E Option
  3. Plugin URI: http://www.***com/ //此为插件官方地址
  4. Description: 这是一个简单的备份及恢复网站选项设置的插件。
  5. Author: luoboyu
  6. Version: 1.0
  7. Author URI:http://www.***.com/ //此为插件作者地址
  8. */
复制代码
实现功能如下图:

步骤二:在wordpress后台创建管理页面,我们需要在后台创建一个管理页面,其包括数据库备份导出和恢复数据导出接口。在function中放入下面的代码。
  1. function register_ie_option() {
  2. add_menu_page('IE Option Page', 'IE Option', 'activate_plugins', 'ie-option', 'ie_option_page', '', 76);
  3. add_submenu_page('ie-option', 'Import', 'Import', 'activate_plugins', 'ie-import-option', 'ie_import_option_page');
  4. add_submenu_page('ie-option', 'Export', 'Export', 'activate_plugins', 'ie-export-option', 'ie_export_option_page');
  5. }
  6. function ie_option_page() {
  7. }
  8. function ie_import_option_page() {
  9. // 内容导入部分
  10. }
  11. function ie_export_option_page() {
  12. // 内容导出部分
  13. }
  14. add_action('admin_menu', 'register_ie_option');
复制代码
注意事项:
1、我们使用add_menu_page在管理页的侧边栏添加一个新的顶级菜单,其中ie_option_page参数是回调函数,输出页面内容。
2、我们使用add_submenu_page将两个不同的功能菜单添加到我们刚刚创建的顶级菜单下。
步骤三:创建数据库导出功能:
  1. function ie_export_option_page() {
  2. if (!isset($_POST['export'])) {
  3.   ?>
  4.   
  5.    

  6.    [b]数据库导出[/b]
  7.    当你点击 备份所有选项按钮时, 系统会创建一个文件,保存在电脑上.

  8.    此备份文件包括所有的设置选项

  9.    导出后,您可以使用此备份文件恢复站点设置或导入另外的wordpress站

  10.    
  11.     [align=left]
  12.      
  13.      
  14.     [/align]
  15.    
  16.   

  17.    }
  18. elseif (check_admin_referer('ie-export')) {
  19.   $blogname = str_replace(" ", "", get_option('blogname'));
  20.   $date = date("m-d-Y");
  21.   $json_name = $blogname."-".$date; //定义将创建的备份文件名
  22.   $options = get_alloptions(); //获取wordpress选项设置,存入数组
  23.   foreach ($options as $key => $value) {
  24.    $value = maybe_unserialize($value);
  25.    $need_options[$key] = $value;
  26.   }
  27.   $json_file = json_encode($need_options);
  28.   ob_clean();
  29.   echo $json_file;
  30.   header("Content-Type: text/json; charset=" . get_option( 'blog_charset'));
  31.   header("Content-Disposition: attachment; filename=$json_name.json");
  32.   exit();
  33. }
  34. }
  35. 注意事项:
  36. 1、get_alloptions()是将获取网站上所有的选项,并作为一个数组返回。
  37. 2、我们获取的仅仅是wordpress的选项设置,不包括其他的数据。
  38. 步骤四:创建数据库导入功能:
  39. function ie_import_option_page() {
  40. ?>

  41.   

  42.   [b]Import[/b]
  43.      if (isset($_FILES['import']) && check_admin_referer('ie-import')) {
  44.     if ($_FILES['import']['error'] > 0) {
  45.      wp_die("Error happens");
  46.     }
  47.     else {
  48.      $file_name = $_FILES['import']['name']; //获取文件名     $file_ext = strtolower(end(explode(".", $file_name))); //获取文件扩展名
  49.      $file_size = $_FILES['import']['size']; //获取文件大小
  50.      if (($file_ext == "json") && ($file_size < 500000)) {
  51.       $encode_options = file_get_contents($_FILES['import']['tmp_name']);
  52.       $options = json_decode($encode_options, true);
  53.       foreach ($options as $key => $value) {
  54.        update_option($key, $value);
  55.       }
  56.       echo "所有选项恢复成功.

  57. ";
  58.      }
  59.      else {
  60.       echo "无效文件或文件过大.

  61. ";
  62.      }
  63.     }
  64.    }
  65.   ?>
  66.   单击”浏览”按钮,选择您要恢复的文件.

  67.   单击重置按钮,恢复您的wordpress选项

  68.   
  69.    [align=left]
  70.    
  71.    
  72.    
  73.    [/align]
  74.   


  75. }
复制代码
实现效果如下图所示:

步骤五:为wordpress创建自定义的一些备份功能:
上面的插件,实现了备份所有的网站选项get_alloptions的功能。如果你想有自己的特定选项,我们可以这样做:options数组内存储更多的数据即可。
  1. $options = array('your_option1_name' => get_option('your_option1_name'), 'your_option2_name' => get_option('your_option2_name');

  2. $json_file = json_encode($options);
复制代码
上面,和大家一起学习了创建一个简单的备份/还原功能的小插件的过程。你应该注意到,这个插件仅仅是一个简单的示例,而不是一个正式的一个。萝卜鱼的目标不是写一个完美的插件,而是展示这一功能实现的基本原则。通过了解它,你可以创建自己的模板或插件功能,希望此示例对您有帮助

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×

发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;

如何回报帮助你解决问题的坛友,好办法就是点击帖子下方的评分按钮给对方加【金币】不会扣除自己的积分,做一个热心并受欢迎的人!

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则 需要先绑定手机号

关闭

站长推荐上一条 /1 下一条

QQ|侵权投诉|广告报价|手机版|小黑屋|西部数码代理|飘仙建站论坛 ( 豫ICP备2022021143号-1 )

GMT+8, 2024-4-28 15:16 , Processed in 0.042558 second(s), 8 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表