允许管理员在自定义帖子类型编辑屏幕上选择帖子作者

时间:2019-10-13 作者:christian

我需要能够允许管理员为他们在admin中创建或编辑的帖子选择其他作者。

我添加了post-author功能,选择字段显示在编辑屏幕上,但如果已经设置,则只提供Admin和当前post-author选项。

其他用户具有organization\\u administrator角色。

以下是我的post\\u类型设置:

$post_type = register_extended_post_type(\'organization_event\', [
            \'supports\' => [\'title\', \'author\'],
            \'public\' => true,
            \'publicly_queryable\' => true,
            \'show_in_admin_bar\' => true,
            \'show_in_menu\' => true,
            \'menu_icon\' => \'dashicons-calendar-alt\',
            \'has_archive\' => true,
            \'capabilities\' => array(
                \'edit_post\' => \'edit_organization_event\',
                \'edit_posts\' => \'edit_organization_events\',
                \'edit_others_posts\' => \'edit_other_organization_events\',
                \'publish_posts\' => \'publish_organization_events\',
                \'read_post\' => \'read_organization_event\',
                \'read_private_posts\' => \'read_private_organization_events\',
                \'delete_post\' => \'delete_organization_event\'
            ),
            \'map_meta_cap\' => true,

        ]);

        $admins = get_role(\'administrator\');
        $admins->add_cap(\'edit_organization_event\');
        $admins->add_cap(\'edit_organization_events\');
        $admins->add_cap(\'edit_other_organization_events\');
        $admins->add_cap(\'publish_organization_events\');
        $admins->add_cap(\'read_organization_event\');
        $admins->add_cap(\'read_private_organization_events\');
        $admins->add_cap(\'delete_organization_event\');
以及organization\\u administrator角色

add_role(\'organization_administrator\', __(\'Organization Administrator\', \'sage\'), [
            \'edit_organization\' => true,
            \'edit_organizations\' => true,
            \'edit_organization_event\' => true,
            \'edit_organization_events\' => true,
        ]);
感谢您提供的任何帮助。

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

所有具有作者和参与者角色的用户(实际上是订阅者之上的任何内置角色)都可以从“作者”下拉列表中获得。但是,如果你想organization_administrator 要使用户也可用,您还需要为这些用户分配一个contibrutor或author角色(除订阅者以外的任何角色)

这似乎是由于WordPress使用用户级别而不是角色时的倒退,因为使用参数\'who\' => \'authors\'... 可能不应该再这样了,但事实就是这样。看见/wp-includes/class-wp-user-query.php 其中who 参数已选中:

 if ( isset( $qv[\'who\'] ) && \'authors\' == $qv[\'who\'] && $blog_id ) {
        $who_query = array(
            \'key\' => $wpdb->get_blog_prefix( $blog_id ) . \'user_level\',
            \'value\' => 0,
            \'compare\' => \'!=\',
        );
或者,您可以添加\'level_1\' => true, (或任何level_* 除了level_0) 添加到您的角色功能列表中,但您需要删除并添加每个用户的角色,以触发user_level 该用户的用户元。(遗憾的是,似乎没有为角色的所有用户更新此内容的内置方法。)

相关推荐

阻止/wp-admin/重定向到主页?

我已将wordpress实例从生产复制到本地。在获取站点的公共端(公共主页、页面和博客帖子)后,我无法访问/wp admin/,因为该url总是重定向到/homepage。我尝试过:更新siteurl和主页至“https://tk.local“(主页和帖子工作正常)实现本地自签名ssl证书(如果是https问题。)</切换到2019主题(主题可行,但问题仍然存在)在wp配置中设置调试常量。php删除wp配置中的调试常量。php将插件目录移到一边,替换为只包含索引的/插件。php这里是一个wp adm