WordPress: пользовательские пользователи не отображаются в поле «Автор» - PullRequest
5 голосов
/ 13 июня 2011

Я добавил пользовательский тип пользователя в Wordpress, пользовательский тип записи поддерживает авторов (см. Ниже).Пользовательский тип пользователя обладает всеми привилегиями автора, кроме «публиковать сообщения», но в списке возможных авторов для назначения на сообщение не .

Что я делаю неправильно?

Код:

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
        ));
}

и вот пользовательский тип сообщения:

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

}

Дайте мне знать, если потребуется дополнительная информация.

1 Ответ

6 голосов
/ 18 июня 2011

В раскрывающемся списке авторов создается следующий вызов:

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

Аргумент who означает, что в списке будут указаны только пользователи с хотя бы ролью автора, а страница Кодекса говорит, что в данный момент это либо «авторы», либо пустые (имеется в виду все пользователи).Для этой функции есть фильтр , но он принимает HTML как ввод.Вы можете создать новый запрос для пользователей, а затем вывести новый раскрывающийся список HTML.Это первый способ решения вашей проблемы.

Однако эта функция с параметром 'who', установленным на 'авторы', ищет пользователей, уровень которых не равен 0, что довольно странно, поскольку уровни пользователей давно устарели.Я обнаружил связанный отчет об ошибке на Trac, в котором рекомендуется добавить возможность 'level_1' в вашу новую роль, чтобы исправить это.Это не чистое решение, но гораздо проще, чем создать фильтр и весь HTML с нуля.

РЕДАКТИРОВАТЬ : Мне пришло в голову третье и даже более простое решение: я создалПользовательские роли с плагинами, но никогда не замечали этой проблемы, потому что я всегда копировал возможности из существующих ролей и затем модифицировал их.Таким образом, вы не забудете никаких возможностей, а также исправите эту ошибку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...