我绝望了,我试着寻找东西方的解决方案,但我似乎无法找到它。 问题是我试图在wordpress中创建一个插件来注册一些简单的设置。 这是代码:
add_action('admin_menu', 'test_plugin_setup_menu');
function test_plugin_setup_menu(){
add_action( 'admin_enqueue_scripts', 'wp_enqueue_media' );
add_action( 'admin_init', 'register_my_cool_plugin_settings' );
add_menu_page( 'Menù della settimana', 'Menù della settimana', 'administrator', 'settimana', 'my_cool_plugin_settings_page');
}
function register_my_cool_plugin_settings() {
register_setting( 'my-cool-plugin-settings-group', 'image_url' );
register_setting( 'my-cool-plugin-settings-group', 'date' );
}
function goddamit() {
return 'edit_posts';
}
add_filter( 'option_page_capability_settimana', 'goddamit' );
function my_cool_plugin_settings_page() { ?>
<div class="wrap">
<h2>Menù della settimana</h2>
<form method="post" action="options.php">
<?php settings_fields( 'my-cool-plugin-settings-group' ); ?>
<?php do_settings_sections( 'my-cool-plugin-settings-group' ); ?>
<table class="form-table">
<tr valign="top">
<div>
<label for="image_url">Carica pdf</label>
<input type="text" name="image_url" id="image_url" class="regular-text" value="<?php echo esc_attr( get_option('image_url') ) ?>">
<input type="button" name="upload-btn" id="upload-btn" class="button-secondary" value="Carica pdf">
</div>
</tr>
<tr valign="top">
<div>
<label for="date">Date (inserire 'dal x al y di mese')</label>
<input type="text" id="date" name="date" value="<?php echo esc_attr( get_option('date') ); ?>" />
<div>
</tr>
</table>
<p class="submit">
<input name="Submit" type="submit" class="button-primary" value="<?php esc_attr_e('Save Changes'); ?>" />
</p>
</form>
</div>
<?php } ?>
到目前为止一切都那么好,如果用户是管理员就没有问题,如果用户是编辑,那你就得到了该死的错误&#39; Cheatin&#39;呃?&#39 ;. 我究竟做错了什么?
每个人都在建议函数option_page_capability_
应该有页面的slug,确实如此,它仍然无法正常工作。帮助
答案 0 :(得分:0)
通过administrator
来电设置add_menu_page
功能,您还有什么期望?
add_menu_page( 'Menù della settimana', 'Menù della settimana', 'administrator', 'settimana', 'my_cool_plugin_settings_page');
将其设为edit_posts
add_menu_page( 'Menù della settimana', 'Menù della settimana', 'edit_posts', 'settimana', 'my_cool_plugin_settings_page');
删除那个奇怪的过滤器。
答案 1 :(得分:0)
已经好几年了,但我今天遇到了同样的问题。
我通过使用组设置的名称而不是菜单页面的slug来解决它。
add_filter( 'option_page_capability_yourgroupsettingsname', 'yourfunction' );
干杯!