簡単!WordPressプラグインへ設定画面を追加しよう

WordPressプラグインへ設定画面を追加したいときがあります。これも簡単に実現できます。

サンプルでは、プラグインを有効にしたときに、sample_config_plugin_init_options()関数でOptionテーブルへ各項目の初期値を設定するようにしています。プラグイン有効時に呼び出されるようにするには、register_activation_hook()関数を使います。function sample-config-plugin-func()はとりあえずのところは中身が空で登録もしていません。設定画面への登録はadd_action('admin_menu', 'sample_config_plugin_add_admin_menu');の行でしています。sample_config_plugin_add_admin_menu()関数を呼び出し、サブメニュー登録をしています。画面はsample_config_plugin_admin_page()で用意し、投稿、参照ができるようにしています。

<?php
/*
  Plugin Name: sample-config-plugin
  Plugin URI: https://www.hiro345.net/blogs/hiro345/sample-config-plugin
  Description: sample-config-plugin
  Version: 1.0
  Author: hiro345
  Author URI: https://www.hiro345.net/blogs/hiro345/
 */
function sample-config-plugin-func($args = '') {
}

function sample_config_plugin_init_options() {
  if (!get_option('sample-config-plugin_installed')) {
    update_option('sample_config_int', -1);
    update_option('sample_config_string', 'sample_config');
    update_option('sample_config_plugin_installed', 1);
  }
}
register_activation_hook(__FILE__, 'sample_config_plugin_init_options');

function sample_config_plugin_add_admin_menu() {
  add_submenu_page('plugins.php', 'sample config pluginの設定', 'sample_config_pluginの設定', 8, __FILE__, 'sample_config_plugin_admin_page');
}
add_action('admin_menu', 'sample_config_plugin_add_admin_menu');

function sample_config_plugin_admin_page() {
  // 「変更を保存」ボタンがクリックされたときは、設定を保存する
  if ($_POST['posted'] == 'Y') {
    update_option('sample_config_int', intval($_POST['config_int']));
    update_option('sample_config_string', stripslashes($_POST['config_string']));
  }
?>
<?php if($_POST['posted'] == 'Y') : ?><div class="updated"><p><strong>設定を保存しました</strong></p></div><?php endif; ?>
<?php if($_POST['posted'] == 'Y') : ?>
<!-- config_string = <?php echo $_POST['config_string']; ?>, striped = <?php echo stripslashes($_POST['config_string']); ?>, saved = <?php get_option('sample_config_string'); ?> -->
<?php endif; ?>
<div class="wrap">
  <h2>sample config plugin の設定</h2>
  <form method="post" action="<?php echo str_replace( '%7E', '~', $_SERVER['REQUEST_URI']); ?>">
    <input type="hidden" name="posted" value="Y">
    <table class="form-table">
      <tr valign="top">
        <th scope="row"><label for="config_int">config_int<label></th>
        <td>
          <input name="config_int" type="text" id="config_int" value="<?php echo get_option('sample_config_int'); ?>" class="regular-text code" /><br />
          config_intを指定します。
        </td>
      </tr>
      <tr valign="top">
        <th scope="row"><label for="config_string">config_string<label></th>
        <td>
          <input name="config_string" type="text" id="config_string" value="<?php echo esc_attr(get_option('sample_config_string')); ?>" class="regular-text code" /><br />config_stringの文字列を指定します。
        </td>
      </tr>
    </table>
    <p class="submit">
      <input type="submit" name="Submit" class="button-primary" value="変更を保存" />
    </p>
  </form>
</div>
<?php
}
?>
同じタグの記事: PHP
同じタグの記事: WordPress
同じカテゴリの記事: Program
関連書籍: PHP
関連書籍: WordPress