後臺選項是在 WordPress 中最重要的資料,它們儲存著您的部落格的各種配置設定。這些選項可以改變 WordPress 的顯示。因此,如果我們沒有記住每一個精確值,如何配置他們回到以前的狀態?

今天,要告訴你如何為 WordPress 部落格建立一個簡單的備份/恢復功能。有了這個功能,你可以將所有的選項配置備份到另一個地方,可以在任何時間恢復,無需重新配置它們。

在一般情況下,此功能將有兩部分實現,一個是資料庫備份匯出部分和恢復資料的匯入部分。下面,就一步一步的帶大家一起做這個簡單外掛。

步驟一:建立一個 ieoption.php 的檔案,下面的操作均在此檔案內,根據 WordPress 官方外掛的描述建立外掛的頭部:

/*

Plugin Name: I/E Option

Plugin URI: http://www.***com/ //此為外掛官方地址

Description: 這是一個簡單的備份及恢復網站選項設定的外掛。

Author: luoboyu

Version: 1.0

Author URI:http://www.***.com/ //此為外掛作者地址

*/

實現功能如下圖:

備份外掛啟用

備份外掛啟用

步驟二:在 WordPress 後臺建立管理頁面,我們需要在後臺建立一個管理頁面,其包括資料庫備份匯出和恢復資料匯出介面。在 function 中放入下面的程式碼。

function register_ie_option() {
 add_menu_page('IE Option Page', 'IE Option', 'activate_plugins', 'ie-option', 'ie_option_page', '', 76);
 add_submenu_page('ie-option', 'Import', 'Import', 'activate_plugins', 'ie-import-option', 'ie_import_option_page');
 add_submenu_page('ie-option', 'Export', 'Export', 'activate_plugins', 'ie-export-option', 'ie_export_option_page');
}
function ie_option_page() {
}
function ie_import_option_page() {
 // 內容匯入部分
}
function ie_export_option_page() {
 // 內容匯出部分
}
add_action('admin_menu', 'register_ie_option');

注意事項:

1 、我們使用 add_menu_page 在管理頁的側邊欄新增一個新的頂級選單,其中 ie_option_page 引數是回撥函式,輸出頁面內容。

2 、我們使用 add_submenu_page 將兩個不同的功能選單新增到我們剛剛建立的頂級選單下。

步驟三:建立資料庫匯出功能:

function ie_export_option_page() {
 if (!isset($_POST['export'])) {
  ?>
  <div >
   <div id="icon-tools" ><br /></div>
   <h2> 資料庫匯出</h2>
   <p> 當你點選 <tt> 備份所有選項</tt> 按鈕時, 系統會建立一個檔案,儲存在電腦上.</p>
   <p> 此備份檔案包括所有的設定選項</p>
   <p> 匯出後,您可以使用此備份檔案恢復站點設定或匯入另外的 WordPress 站</p>
   <form method='post'>
    <p >
     <?php wp_nonce_field('ie-export'); ?>
     <input type='submit' name='export' value='Backup all options'/>
    </p>
   </form>
  </div>
  <?php
 }
 elseif (check_admin_referer('ie-export')) {
  $blogname = str_replace(" ", "", get_option('blogname'));
  $date = date("m-d-Y");
  $json_name = $blogname."-".$date; //定義將建立的備份檔名
  $options = get_alloptions(); //獲取 WordPress 選項設定,存入陣列
  foreach ($options as $key => $value) {
   $value = maybe_unserialize($value);
   $need_options[$key] = $value;
  }
  $json_file = json_encode($need_options);
  ob_clean();
  echo $json_file;
  header("Content-Type: text/json; charset=" . get_option( 'blog_charset'));
  header("Content-Disposition: attachment; filename=$json_name.json");
  exit();
 }
}

注意事項:

1 、 get_alloptions() 是將獲取網站上所有的選項,並作為一個陣列返回。

2 、我們獲取的僅僅是 WordPress 的選項設定,不包括其他的資料。

步驟四:建立資料庫匯入功能:

function ie_import_option_page() {
 ?>
 <div >
  <div id="icon-tools" ><br /></div>
  <h2>Import</h2>
  <?php
   if (isset($_FILES['import']) && check_admin_referer('ie-import')) {
    if ($_FILES['import']['error'] > 0) {
     wp_die("Error happens");
    }
    else {
     $file_name = $_FILES['import']['name']; //獲取檔名     $file_ext = strtolower(end(explode(".", $file_name))); //獲取副檔名
     $file_size = $_FILES['import']['size']; //獲取檔案大小
     if (($file_ext == "json") && ($file_size < 500000)) {
      $encode_options = file_get_contents($_FILES['import']['tmp_name']);
      $options = json_decode($encode_options, true);
      foreach ($options as $key => $value) {
       update_option($key, $value);
      }
      echo "<div ><p> 所有選項恢復成功.</p></div>";
     }
     else {
      echo "<div ><p> 無效檔案或檔案過大.</p></div>";
     }
    }
   }
  ?>
  <p> 單擊」 瀏覽」 按鈕,選擇您要恢復的檔案.</p>
  <p> 單擊重置按鈕,恢復您的 WordPress 選項</p>
  <form method='post' enctype='multipart/form-data'>
   <p >
    <?php wp_nonce_field('ie-import'); ?>
    <input type='file' name='import' />
    <input type='submit' name='submit' value='Restore'/>
   </p>
  </form>
 </div>
 <?php
}

實現效果如下圖所示:

備份外掛選單

備份外掛選單

備份外掛匯入功能

備份外掛匯入功能

步驟五:為 WordPress 建立自定義的一些備份功能:

上面的外掛,實現了備份所有的網站選項 get_alloptions 的功能。如果你想有自己的特定選項,我們可以這樣做:options 陣列記憶體儲更多的資料即可。

$options = array('your_option1_name' => get_option('your_option1_name'), 'your_option2_name' => get_option('your_option2_name');
 
$json_file = json_encode($options);

上面,和大家一起學習了建立一個簡單的備份/還原功能的小外掛的過程。你應該注意到,這個外掛僅僅是一個簡單的示例,而不是一個正式的一個。蘿蔔魚的目標不是寫一個完美的外掛,而是展示這一功能實現的基本原則。透過瞭解它,你可以建立自己的模板或外掛功能,希望此示例對您有幫助