具有自定义角色的用户未显示在帖子作者选择框中

时间:2013-03-21 作者:souporserious

我正在使用一个函数创建新的用户角色并删除一些默认值。但是,它们不会出现在post-author框中!只有管理员显示,因为他们被选为管理员。任何具有自定义角色的用户都不会显示。知道为什么会这样吗?

以下是我的功能:

// Add New User Roles
function add_new_roles() {

    // New Roles To Be Added
    $new_roles = array(
        array(
            \'role\'      => \'senior_pastor\',
            \'display\'   => \'Senior Pastor\'
        ),
        array(
            \'role\'      => \'exec_pastor\',
            \'display\'   => \'Executive Pastor\'
        ),
        array(
            \'role\'      => \'assoc_pastor\',
            \'display\'   => \'Associate Pastor\'
        ),
        array(
            \'role\'      => \'elder\',
            \'display\'   => \'Elder\'
        ),
        array(
            \'role\'      => \'ministry_leader\',
            \'display\'   => \'Ministry Leader\'
        )
    );

    foreach($new_roles as $role){
        add_role($role[\'role\'], $role[\'display\'], array(
            \'edit_published_posts\' => true,
            \'upload_files\' => true,
            \'create_product\' => true,
            \'publish_posts\' => true,
            \'delete_published_posts\' => true,
            \'edit_posts\' => true,
            \'delete_posts\' => true,
            \'read\' => true
        ));
    }

    // Old Roles To Be Removed
    $old_roles = array(
        \'subscriber\',
        \'contributor\',
        \'author\'
        \'editor\'
    );

    foreach($old_roles as $role){
        remove_role( $role );
    }
}
add_action(\'after_switch_theme\', \'add_new_roles\');

2 个回复
SO网友:souporserious

找到以下解决方法。我想这与Wordpress核心中的一个bug有关。这将列出帖子中的所有用户,所以要小心。

// Filter to fix the Post Author Dropdown
function author_override( $output ) {
    global $post, $user_ID;

    // return if this isn\'t the theme author override dropdown
    if (!preg_match(\'/post_author_override/\', $output)) return $output;

    // return if we\'ve already replaced the list (end recursion)
    if (preg_match (\'/post_author_override_replaced/\', $output)) return $output;

    // replacement call to wp_dropdown_users
      $output = wp_dropdown_users(array(
        \'echo\' => 0,
        \'name\' => \'post_author_override_replaced\',
        \'selected\' => empty($post->ID) ? $user_ID : $post->post_author,
        \'include_selected\' => true
      ));

      // put the original name back
      $output = preg_replace(\'/post_author_override_replaced/\', \'post_author_override\', $output);

    return $output;
}
add_filter(\'wp_dropdown_users\', \'author_override\');
贷记至here

SO网友:brasofilo

是的,的确,这是一个错误,正如票证中所报告的#16841.

用3.6-beta3测试,它仍然存在。。。解决方法是scribu\'s words:

[…]添加level_1 限制你的角色

考虑到很久以前用户级别是如何被弃用的,这是PITA,但现在你可以做到了

和如广告所示;)

作为参考,以下是wp_dropdown_users 发生在核心:

export, post list table, meta-boxes, users

结束

相关推荐

Admin Theme customization

我遵循wordpress codex网站上关于通过插件创建管理主题的说明。我激活了插件,但我的样式表没有包含在<head>.. 这是我的代码:add_action( \'admin_init\', \'kd_plugin_admin_init\' ); add_action( \'admin_menu\', \'kd_plugin_admin_menu\' ); function kd_plugin_admin_init() { /* Register