我知道这是一个常见的错误,但我还没有遇到任何有效的解决方案。我正在创建一个使用自定义帖子类型的插件,并且在该 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() 没有将属性添加到白名单属性列表中。如果有人对这里发生的事情有更好的了解,我很想听听。