保存自定义帖子类型设置时的 WordPress 'Error: options page not found'



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

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>

我不知所措,任何帮助将不胜感激。

在这里找到答案:

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

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

相关内容

最新更新