Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

WordPress: Custom Users not Appearing in Author box

Tags:

php

wordpress


I've added a custom user type in Wordpress, the custom post type supports Authors(See below). The custom user type has all the privileges of an author except for 'publish posts', but is not on the list of possible authors to assign to the post.

What am I doing wrong?

Code:

if (!get_role('member')) {
        add_role('member', 'SFUK Member', array(
            'delete_posts' => true,
            'edit_posts' => true,
            'read' => true,
            'upload_files' => true,
            'edit_published_posts' => true,
            'delete_published_posts' => true
        ));
}

and here is the custom post type :

$args = array(
    'labels' => $labels,
    'public' => true,
    'publicly_queryable' => true,
    'show_ui' => true,
    'query_var' => true,
    'rewrite' => true,
    'capability_type' => 'post',
    'hierarchical' => true,
    'menu_position' => 0,
    'supports' => array('title', 'editor', 'thumbnail', 'page-attributes', 'author')
);

if (!post_type_exists('ent')) {
    register_post_type('ent', $args);
    remove_post_type_support('ent', 'editor');

}

Let me know if more information is needed.

like image 484
Sean Avatar asked Jun 13 '11 11:06

Sean


People also ask

How do I add an author to a custom post type in WordPress?

in order to add author support to a custom post type you need to added 'author' to the supports array when registering the post type: 'supports' => array('title', 'editor', 'thumbnail', 'comments', 'author'), This will activate author box on the edit screen.

How do I change the author box in WordPress?

To do this, simply go to Users » All Users in your WordPress admin panel. Then, hover over the user profile you want to change and click the 'Edit' link. This brings you to the profile edit screen. You'll want to scroll down the page to the 'Biographical Info' section to add the author's bio.

What is the difference between author and contributor on WordPress?

Author: This roles enables the user to edit, delete, and publish posts. Contributor: This role enable users to edit and delete their own posts. Subscriber: This role enables the user to read content on the site.


1 Answers

The authors dropdown is created the following call:

wp_dropdown_users( array(
    'who' => 'authors',
    'name' => 'post_author_override',
    'selected' => empty($post->ID) ? $user_ID : $post->post_author,
    'include_selected' => true
) );

The who argument means that only users with at least 'author' role will be listed, and the Codex page says that currently it's either 'authors' or empty (meaning all users). There is a filter for this function but it takes the HTML as input. You could create a new query for users and then output a new HTML dropdown. This is the first way to solve your problem.

However, this function with 'who' set to 'authors' searches for users whose level is not 0 which is quite strange since user levels have been deprecated long ago. I've found a related bug report on Trac recommending that you add a 'level_1' capability to your new role to fix this. This is not a clean solution but much easier than creating a filter and all HTML from scratch.

EDIT: A third and even more simple solution just came to my mind: I've created custom roles with plugins but never noticed this problem because I was always copying capabilities from existing roles and then modifying them. This way you won't forget any capabilities and it will also fix this bug.

like image 63
molnarm Avatar answered Sep 23 '22 05:09

molnarm