web-dev-qa-db-ja.com

カスタムプラグインオプションの値を保存および取得する

入力データの値を保存して取得したいのですが、 otto press のチュートリアルを実行しました。

私はWordPressのプラグインを作成するのが初めてなので理解できないのは、一度クリックすると理解できないことです。 Save changes ボタンをクリックすると、ページが表示されます。

設定を保存しました

私の質問は、入力の値がどこに行くのか、そして同じページ内でその値をどのように取得するのかということです。

これが私のコードです

add_action('admin_menu', 'add_page');

if ( !function_exists( 'add_page' ) ) {
    //function to add page under setting options in wordpress admin section
    function add_page() {
        add_options_page('New Setting Page', 'New Setting', 'manage_options', 'plugin', 'plugin_options_frontpage');
    }   
}

function plugin_options_frontpage() {
    ?>
    <div class="wrap">
    <h2>New Setting Page title</h2>
    <form action="options.php" method="post">
    <?php settings_fields('plugin_options'); ?>
    <?php do_settings_sections('plugin'); ?>
    <table class="form-table"> 
      <tr valign="top">
        <td colspan="2">
            <input name="Submit" type="submit" class="button button-primary" value="<?php esc_attr_e('Save Changes'); ?>" />
        </td>
      </tr>
    </table>
    </form>
    </div>
    <?php
}    

add_action('admin_init', 'plugin_admin_init');

function plugin_admin_init(){
    register_setting( 'plugin_options', 'plugin_options', 'plugin_options_validate' );
    add_settings_section('plugin_main', 'Main Settings', 'plugin_section_text', 'plugin');
    add_settings_field('plugin_text_input1', 'Input 1', 'plugin_input1', 'plugin', 'plugin_main');
    add_settings_field('plugin_text_input2', 'Input 2', 'plugin_input2', 'plugin', 'plugin_main');
}

function plugin_section_text() {
    echo '<p>New input setting to be saved.</p>';
}

function plugin_input1() {
    $options = get_option('plugin_options');
    echo "<input id='plugin_input1' class='normal-text code' name='plugin_options[text_string]' size='30' type='text' value='{$options['text_string']}' />";
}

function plugin_input2() {
    $options = get_option('plugin_options');
    echo "<input id='plugin_input2' class='normal-text code' name='plugin_options[text_string]' size='30' type='text' value='{$options['text_string']}' />";
}

function plugin_options_validate($input) {
    $options = get_option('plugin_options');
    $options['text_string'] = trim($input['text_string']);
    if(!preg_match('/^[a-z0-9]{32}$/i', $options['text_string'])) {
        $options['text_string'] = '';
    }
    return $options;
}
3
Arish

オプションは配列$wp_prefix . "options"に配列として格納されます。

$myoptions = get_option('plugin_options')でオプションを取得できます。それを見るためにvar_export( $myoptions );を試してください。

wp-admin/options.phpには、保存されているすべてのオプションを確認できる隠しページもあります。

6
fuxia