オプションは WordPress で最も重要なデータであり、さまざまな構成設定が保存されます (詳細を参照)。これらは、投稿やページなどの他の重要なデータと同様にデータベースにも含まれます。これらのオプションは、WordPress 自体またはユーザーによって日々変更できます。では、正確な値をすべて覚えておらずに、どのように構成して前の状態に戻すのでしょうか?
このチュートリアルでは、WordPress ブログの簡単なバックアップ/復元機能を作成する方法を説明します。この機能を使用すると、すべてのオプションを別の場所にバックアップでき、再構成することなく、いつでもそこから復元できます。
一般的に、この関数はデータをバックアップするエクスポート部分とデータを復元するインポート部分の 2 つの部分に分割されます。そこで、簡単なプラグインを作成してこれらを説明します。
まず、WordPress にプラグインについて伝えるために数行を書く必要があります。
リーリー結果は次のとおりです:
次に、上記の 2 つの主要な機能 (インポートおよびエクスポート機能を含む) を表示するプラグイン インターフェイスを配置する場所が必要です。そこで、管理セクションにページを生成します:
リーリーここに重要なポイントがいくつかあります:
add_menu_page
を使用して、管理メニューのサイドバーに新しいトップレベルのメニュー セクションを追加します。ここで、ie_option_page
パラメーターは、ページのコンテンツを出力します。 add_submenu_page
を使用して、上で作成したばかりのトップレベル メニューにそれらを追加します。ご覧のとおり、各関数には、add_menu_page
関数と同様に、出力を表示するコールバック関数もあります。それらを 1 か所に統合するかどうかは問題ではありません。ただ、明確にするように努めます。 register_ie_option
を admin_menu
アクションにフックして、このアクションが呼び出されるたびにターゲットがトリガーされるようにします。 次のようなエクスポート ページを作成する予定です:
ボタンのあるフォームを作成し、ボタンがクリックされたかどうかを確認するだけです。さらに、利用可能な WordPress CSS クラスの一部を使用して説明テキストを追加します。セキュリティ チェックには、wp_nonce_field()
関数と check_admin_referer()
関数を使用します。WordPress Nonce について詳しくは、こちらをご覧ください。
ファイルに名前を付けるだけで、いつ、どこにエクスポートされたかを簡単に確認できます。
これは重要なステップですので、注意してください:
get_alloptions()
は、サイト上のすべてのオプションを取得し、配列として返す関数です (この場合は $options
)。 json_encode
はこの目標の達成に役立ちます。 次に、JSON データの内容を 2 つの重要な関数 ob_clean()
と exit()
でラップし、生成された JSON ファイルに json_file# のみが含まれるようにします。 ## 他のデータを含めずに JSON データを保存しました。ちなみに、ダウンロードダイアログを表示するためにヘッダーリクエストをクライアントに送信します。正しく動作させるには、プラグイン コードの先頭に
ob_start() 関数を配置する必要があります。これにより、ヘッダー エラーの発生を防ぐことができます。WordPress コードのどこかに余分なスペースや行がある可能性があります。この状況を引き起こす可能性があります。
p>
「JSON (JavaScript Object Notation) は軽量のデータ交換形式です。人間にとっては読み書きが簡単で、機械にとっては解析と生成が簡単です。」これは完全なエクスポート関数コードです:
リーリー
function ie_import_option_page() { ?> <div class="wrap"> <div id="icon-tools" class="icon32"><br /></div> <h2>Import</h2> <?php if (isset($_FILES['import'])) { // Do something if a file was uploaded } ?> <p>Click Browse button and choose a json file that you backup before.</p> <p>Press Restore button, WordPress do the rest for you.</p> <form method='post' enctype='multipart/form-data'> <p class="submit"> <?php wp_nonce_field('ie-import'); ?> <input type='file' name='import' /> <input type='submit' name='submit' value='Restore'/> </p> </form> </div> <?php }
与导出页面一样,我们创建了一个表单,但这次,我们添加了一个浏览按钮,以便用户可以选择他们想要的文件并提交。
if (isset($_FILES['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 class='updated'><p>All options are restored successfully.</p></div>"; } else { echo "<div class='error'><p>Invalid file or file size too big.</p></div>"; } } }
如果上传过程出错,只需返回一条死消息“发生错误”。如果没有,获取文件的扩展名和大小,将它们存储到变量中并检查它们。我们只接受扩展名为“.json”且大小小于 500000 字节的文件。如果文件不合适,则仅显示一条错误消息“文件无效或文件大小太大。”。 注意:您可以根据需要修改此尺寸。
然后,$encode_options
变量将获取该文件的所有内容。由于文件中包含JSON数据,因此在使用之前我们必须先解码。为此,我们使用 json_decode
和具有 true 值的第二个参数,因此该函数返回一个数组值。有了数组值,我们就开始循环它。在每次迭代中,我们将使用相同的键及其值更新数据。最后,我们的所有选项都将完全恢复原样,并显示一条成功消息。
这是完整的导入功能代码:
function ie_import_option_page() { ?> <div class="wrap"> <div id="icon-tools" class="icon32"><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']; // Get the name of file $file_ext = strtolower(end(explode(".", $file_name))); // Get extension of file $file_size = $_FILES['import']['size']; // Get size of file /* Ensure uploaded file is JSON file type and the size not over 500000 bytes * You can modify the size you want */ 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 class='updated'><p>All options are restored successfully.</p></div>"; } else { echo "<div class='error'><p>Invalid file or file size too big.</p></div>"; } } } ?> <p>Click Browse button and choose a json file that you backup before.</p> <p>Press Restore button, WordPress do the rest for you.</p> <form method='post' enctype='multipart/form-data'> <p class="submit"> <?php wp_nonce_field('ie-import'); ?> <input type='file' name='import' /> <input type='submit' name='submit' value='Restore'/> </p> </form> </div> <?php }
在示例插件中,我使用 get_alloptions
WordPress 函数备份了所有站点选项。如果您想将其应用于您自己的特定选项,只需这样做:
$options = array('your_option1_name' => get_option('your_option1_name'), 'your_option2_name' => get_option('your_option2_name'); $json_file = json_encode($options);
然后继续执行上述下一步。您可以自由选择要备份的选项!
在本教程中,我们将概述创建简单的备份/恢复功能。您应该注意到,我的插件只是一个简单的示例,而不是官方的。我的目标不是写一个完美的插件,而是向你展示这个功能的基本原理。通过理解它,您可以在模板或插件上创建自己的功能,也可以根据需要使其灵活。因此,您可以为您的模板/插件隔离此功能。
我希望本教程对您有用,请告诉我您的想法。你的想法让它变得更好,甚至告诉我我的错误,你的反馈真的会有很大帮助。感谢您的阅读!
add_menu_page
WordPress 函数add_submenu_page
WordPress函数get_alloptions
WordPress 函数以上が設定のバックアップと復元のプロセスを簡素化するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。