web-dev-qa-db-ja.com

プラグインオプションが保存または作成されていません

この設定ページで多くの問題を抱えています。私はドキュメント(これはまばらだった)をたどり、少し手助けを探しました。

私の問題は単純です、私の設定オプションは作成も保存もされていません。任意の助けは大歓迎です!

これが一般的な設定です。

    public $view;

    function __construct()
    {
        $this->view = new My_View;
        // hook the settings menu
        add_action('admin_menu', array($this, 'index'));
        // hook the settings' settings
        add_action('admin_init', array($this, 'registerSettings'));
    }
    /**
     * setup the settings menu Page Title, Menu Title, Permissions, Menu Slug, View to render
     */
    public function index()
    {
        add_options_page("My Settings", "My menu", "manage_options", "My_Settings", array($this->view, 'index_view'));
    }

    public function registerSettings()
    {
        //options, name of option, validate function
        register_setting('my_general_settings', 'my_general_settings');
    }

次に、フォーム:

public function index_view()
{ ?>

    <div class="wrap" style="display:block;">
        <h2>Settings</h2>
        <hr>

        <form method="POST" action="">
            <h3>General Settings</h3>

            <?php settings_fields('my_general_settings'); ?>
            <?php $settings = get_option('my_general_settings') ?>

            <label for="my_settings[publisher_id]">Enter your Publisher ID:</label>
            <input type="text" name="my_general_settings[publisher_id]" value="<?php echo $settings['publisher_id']?>" />
            <input type="submit" value="Save Changes" />
            <p>Forgot your ID? <a href="">Click here</a></p>
        </form>
    </div>
<?php }
1
user4607

フォームアクションはoptions.phpを指す必要があります。これは、すべての設定ページに対するWordPressの組み込みハンドラです。

<form method="POST" action="options.php">

これはCodexの Settings APIページ にかなり徹底的に文書化されています。

3
John Blackbourn