编辑者角色无法保存自定义主题选项

时间:2013-09-18 作者:Ciaran Gaffey

这个网站上有一些问题涉及到这个问题,我已经阅读了这些问题,并应用了提议的解决方案,但没有任何效果。

我为编辑器角色创建了一个非常简单的主题选项页面,但当编辑器试图保存选项时,会出现“作弊”的情况消息

以下是我的选项代码:

<?php
function map_register_settings() {
    add_option( \'map_zoom\', \'1\');
    add_option( \'map_longitude\', \'alpha\');
    register_setting( \'default\', \'map_zoom\' ); 
    register_setting( \'default\', \'map_longitude\' ); 
    register_setting( \'default\', \'map_latitude\' ); 
} 
add_action( \'admin_init\', \'map_register_settings\' );

function map_register_options_page() {
    add_theme_page(\'Map Center\', \'Map Center\', \'edit_theme_options\', \'map-options\', \'map_options_page\');
}
add_action(\'admin_menu\', \'map_register_options_page\');

function map_options_page() {
    ?>
<div class="wrap">
    <h2>Map Center Options</h2>
    <form method="post" action="options.php"> 
        <?php settings_fields( \'default\' ); ?>
            <table class="form-table">
                <tr valign="top">
                    <th scope="row"><label for="map_zoom">Zoom Level (1 - 21):</label></th>
                    <td>
                    <input type="text" id="map_zoom" name="map_zoom" value="<?php echo get_option(\'map_zoom\'); ?>" />
                    </td>
                </tr>
                <tr valign="top">
                    <th scope="row"><label for="map_latitude">Latitude:</label></th>
                    <td><input type="text" id="map_latitude" name="map_latitude" value="<?php echo get_option(\'map_latitude\'); ?>" /></td>
                </tr>
                <tr valign="top">
                    <th scope="row"><label for="map_longitude">Longitude:</label></th>
                    <td><input type="text" id="map_longitude" name="map_longitude" value="<?php echo get_option(\'map_longitude\'); ?>" /></td>
                </tr>
            </table>
        <?php submit_button(); ?>
    </form>
</div>
<?php
}
?>
为了给编辑器角色提供必要的功能,我还向函数文件中添加了以下内容:

//ALLOW EDITOR TO CHANGE MAP CENTER
 // get the the role object
   $editor = get_role(\'editor\');
   // add $cap capability to this role object
   $editor->add_cap(\'edit_theme_options\');

2 个回复
最合适的回答,由SO网友:sanchothefat 整理而成

这里有一个bug(ish)报告:http://make.wordpress.org/themes/2011/07/01/wordpress-3-2-fixing-the-edit_theme_optionsmanage_options-bug/

您可以使用过滤器修改主题页功能。首先,您需要编辑register_setting() 调用如下所示:

register_setting( \'map-options\', \'map_zoom\' ); 
register_setting( \'map-options\', \'map_longitude\' ); 
register_setting( \'map-options\', \'map_latitude\' ); 
第一个参数是设置组,这就是我们筛选功能的目的。

二是添加过滤器:

add_filter( \'option_page_capability_map-options\', \'sewp_114719_map_options_capability\' );
function sewp_114719_map_options_capability( $cap ) {
    return \'edit_theme_options\';
}
这应该可以做到。

如果有意义的话,您可以使用customiser,但我不确定编辑器是否可以直接使用它。

SO网友:neil.odiaz

plugin 可能会有帮助。允许您编辑、创建和删除角色以及这些角色的功能。

结束

相关推荐

WP站点速度慢,heme.php没有缓存吗?最长25秒的加载时间!

我有两个来自Joomla域的WP子目录。Joomla装载时间正常。然而,WPs的速度太慢了。后端也很慢。我在两者上都安装了w3缓存,我从一些优秀的资源中复制了设置,但它们仍然很慢!谁能看看吗?http://www.howlatthemoon.com/howl2go/http://www.howlatthemoon.com/dueling_piano_bar/