这个网站上有一些问题涉及到这个问题,我已经阅读了这些问题,并应用了提议的解决方案,但没有任何效果。
我为编辑器角色创建了一个非常简单的主题选项页面,但当编辑器试图保存选项时,会出现“作弊”的情况消息
以下是我的选项代码:
<?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\');
最合适的回答,由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,但我不确定编辑器是否可以直接使用它。