wp admin - Allow administrators to pick post author on custom post type edit screen

I need to be able to allow Administrators to choose a different author for a post they create or edit in admin.I've

I need to be able to allow Administrators to choose a different author for a post they create or edit in admin.

I've added the post author capability, and the select field displays on the edit screen, but the only options given are the Admin and the current post author, if it is already set.

The other users have the organization_administrator role.

Here is my post_type setup:

$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');

And the organization_administrator role

add_role('organization_administrator', __('Organization Administrator', 'sage'), [
            'edit_organization' => true,
            'edit_organizations' => true,
            'edit_organization_event' => true,
            'edit_organization_events' => true,
        ]);

Thanks for any help you can provide.

I need to be able to allow Administrators to choose a different author for a post they create or edit in admin.

I've added the post author capability, and the select field displays on the edit screen, but the only options given are the Admin and the current post author, if it is already set.

The other users have the organization_administrator role.

Here is my post_type setup:

$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');

And the organization_administrator role

add_role('organization_administrator', __('Organization Administrator', 'sage'), [
            'edit_organization' => true,
            'edit_organizations' => true,
            'edit_organization_event' => true,
            'edit_organization_events' => true,
        ]);

Thanks for any help you can provide.

Share Improve this question asked Oct 13, 2019 at 15:35 christianchristian 1791 silver badge7 bronze badges
Add a comment  | 

1 Answer 1

Reset to default 1

All users with author and contributor roles - actualy any in-built role above subscriber - should be available from the author dropdown. However, if you want organization_administrator users to be available also, you will need to assign those users a contibrutor or author role as well (anything more than subscriber.)

This seems to be due to a throwback from when WordPress had user levels instead of roles because the post author metabox is called with an argument of 'who' => 'authors'... It probably should not be this way any more but that's how it is. See /wp-includes/class-wp-user-query.php where the who argument is checked:

 if ( isset( $qv['who'] ) && 'authors' == $qv['who'] && $blog_id ) {
        $who_query = array(
            'key' => $wpdb->get_blog_prefix( $blog_id ) . 'user_level',
            'value' => 0,
            'compare' => '!=',
        );

Alternatively, you can add 'level_1' => true, (or any level_* except level_0) to your role capability list, but you will need to remove and add the role from each user with it to trigger an update of the user_level user meta for that user. (Unfortunately there doesn't seem to be an in-built way of updating this for all users of a role.)

发布者:admin,转转请注明出处:http://www.yc00.com/questions/1745083712a4610280.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信