2

我今天创建了一个简单的 wordpress 插件,它本质上是一个选项页面。它基于此链接上的说明: http: //codex.wordpress.org/Creating_Options_Pages(该页面底部有示例代码,我将其用作插件的主干)。

基本上,我希望作者/贡献者能够在他们的管理菜单中看到一个新选项卡,单击该选项卡时,会将用户带到他/她可以编写一些文本并点击“保存更改”的页面(然后保存该文本到数据库)。我希望以后能够通过 get_option('some_option') 之类的方式调用此文本。

但是,作者/贡献者不能“管理选项”,这阻止了他们编辑我创建的新菜单选项卡上的选项。我安装了一个名为“用户角色编辑器”的插件,以允许作者/贡献者管理选项,但这会在他们的管理菜单中带来“设置”选项卡,并允许他们管理所有选项。

我怎样才能允许作者/贡献者只为我创建的插件管理选项而不是别的?我可以取消我创建的插件的权限限制吗?任何指导将不胜感激!(插件开发很顺利,但现在我被卡住了)。

我的代码与上面给出的链接中的示例非常相似:

<?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 } ?>
4

2 回答 2

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 函数允许组 baw-settings-group 的选项(由 register_setting 函数在 register_mysettings 函数中声明)由可以编辑_posts 的用户更改(函数 211_option_page_capability 被赋予 add_filter 作为返回 'edit_posts 的第二个参数')。

来源:http ://wordpress.org/support/topic/wordpress-settings-api-cheatin-uh-error?replies=0

于 2013-01-05T03:29:43.020 回答
0

您可以按用户权限检查:

if (current_user_can('permission')) {
... do stuff
}

因此,如果您想要一个仅供编辑/管理员使用的部分,例如,您可以使用:

function register_mysettings() {
  if (current_user_can('edit_posts') {
    //register our settings...
于 2013-01-05T02:18:40.460 回答