Wordpress'错误:未找到选项页面'保存自定义帖子类型设置时

时间:2014-12-16 20:12:36

标签: wordpress plugins

我知道这是一个常见错误,但我没有遇到任何有效的解决方案。我正在创建一个使用自定义帖子类型的插件,我在该CPT菜单下有一个设置页面。设置页面显示正常,但是当我去保存设置时,我收到错误ERROR:找不到选项页面。这是我的设置类:

class Settings {
    private $view;

    public function __construct( $view ) {
        $this->view = $view;
        add_action( 'admin_menu', array( $this, 'submenu' ) );
        add_action( 'admin_init', function () {
            add_settings_section(
                'saw_hours',
                'Hours Settings', // Title
                array( $this, 'settings' ),
                'saw_hours_settings'
            );
        } );
    }

    public function submenu()
    {
        add_submenu_page(
            "edit.php?post_type=saw_hours", // Parent slug
            "Settings", // Page title
            "Settings", // Menu title
            "activate_plugins", // Role required
            'saw_hours_settings', // Menu slug
            array($this->view, 'admin'));
    }

    public function settings()
    {
        // API key setting
        register_setting(
            'saw_hours',
            'saw_hours_api_key'
        );
        add_settings_field(
            'saw_hours_api_key',
            'Set API Key:',
            function(){
                $clientId = get_option('saw_hours_api_key');
                echo '<input type="text" name="saw_hours_api_key" value="' . $clientId . '" >';
            },
            'saw_hours_settings',
            'saw_hours'
        );

        // Client ID setting
        register_setting(
            'saw_hours',
            'saw_hours_client_id'
        );
        add_settings_field(
            'saw_hours_client_id',
            'Set Client ID:',
            function(){
                $clientId = get_option('saw_hours_client_id');
                echo '<input type="text" name="saw_hours_client_id" value="' . $clientId . '" >';
            },
            'saw_hours_settings',
            'saw_hours'
        );
    }


}

这是表单页面:

<form method="POST" action="options.php">
  <?php settings_fields( 'saw_hours' ); ?>
  <?php do_settings_sections( 'saw_hours_settings'); ?>
  <?php submit_button(); ?>
</form>

我很茫然,任何帮助都会受到赞赏。

1 个答案:

答案 0 :(得分:1)

在这里找到答案:

https://wordpress.stackexchange.com/questions/139660/error-options-page-not-found-on-settings-page-submission-for-an-oop-plugin

这并不能解释为什么register_setting()没有将属性添加到列入白名单的属性列表中。如果有人对这里发生的事情有了更好的了解,我很乐意听到。