我今天创建了一个简单的wordpress插件,它本质上是一个选项页面。它基于此链接上的说明:http://codex.wordpress.org/Creating_Options_Pages(该页面底部有示例代码,我用作插件的主干)。
基本上,我希望作者/贡献者能够在他们的管理菜单中看到一个新选项卡,单击该选项卡时,会将用户带到一个页面,在该页面中他/她可以编写一些文本并点击“保存更改”(然后将该文本保存到数据库中)。我希望稍后能够通过类似get_option('some_option')的内容来调用此文本。
然而,作者/贡献者不能“manage_options”&这阻止了他们编辑我创建的新菜单选项卡上的选项。我安装了一个名为“用户角色编辑器”的插件,允许作者/贡献者进行manage_options,但这会在其管理菜单中显示“设置”选项卡,并允许他们管理所有选项。
如何允许作者/贡献者仅对我创建的插件的manage_options进行其他操作?我可以解除对我创建的插件的权限限制吗?任何指导将不胜感激! (插件开发顺利,但现在我卡住了。)
我的代码非常类似于上面给出的链接中的示例:
<?php
add_action('admin_menu', 'baw_create_menu');
function baw_create_menu() {
//create new top-level menu
add_menu_page('BAW Plugin Settings', 'BAW Settings', 'edit_posts', 'my-plugin', 'baw_settings_page');
//call register settings function
add_action( 'admin_init', 'register_mysettings' ); }
function register_mysettings() {
//register our settings
register_setting( 'baw-settings-group', 'new_option_name' );
register_setting( 'baw-settings-group', 'some_other_option' );
register_setting( 'baw-settings-group', 'option_etc' ); }
function baw_settings_page() { ?> <div class="wrap"> <h2>Plugin Name</h2>
<form method="post" action="options.php">
<?php settings_fields( 'baw-settings-group' ); ?>
<?php do_settings( 'baw-settings-group' ); ?>
<table class="form-table">
<tr valign="top">
<th scope="row">New Option Name</th>
<td><input type="text" name="new_option_name" value="<?php echo get_option('new_option_name'); ?>" /></td>
</tr>
<tr valign="top">
<th scope="row">Some Other Option</th>
<td><input type="text" name="some_other_option" value="<?php echo get_option('some_other_option'); ?>" /></td>
</tr>
<tr valign="top">
<th scope="row">Options, Etc.</th>
<td><input type="text" name="option_etc" value="<?php echo get_option('option_etc'); ?>" /></td>
</tr>
</table>
<?php submit_button(); ?>
</form> </div> <?php } ?>
答案 0 :(得分:2)
我找到了解决方案:
function twentyeleven_option_page_capability( $capability ) {
return 'edit_posts';
}
add_filter( 'option_page_capability_baw-settings-group', 'twentyeleven_option_page_capability' );
我在注册设置的函数之后添加了(在我上面提供的代码中,这将是函数register_mysettings())
基本上,add_filter函数允许group_baw-settings-group的选项(由register_setting函数在register_mysettings函数中声明)由edit_posts的用户改变(函数twentyeleven_option_page_capability被赋予add_filter作为第二个参数,返回'edit_posts')。
来源:http://wordpress.org/support/topic/wordpress-settings-api-cheatin-uh-error?replies=0
答案 1 :(得分:0)
您可以user privilege检查:
if (current_user_can('permission')) {
... do stuff
}
因此,如果您只想要编辑/管理员的部分,您可以使用:
function register_mysettings() {
if (current_user_can('edit_posts') {
//register our settings...