option_page_capability_无法正常工作

时间:2016-07-26 20:42:34

标签: wordpress plugins

我绝望了,我试着寻找东西方的解决方案,但我似乎无法找到它。 问题是我试图在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,确实如此,它仍然无法正常工作。帮助

2 个答案:

答案 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' );

干杯!