WordPress:自定义用户未出现在作者框中

时间:2011-06-13 11:49:14

标签: php wordpress


我在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 个答案:

答案 0 :(得分:6)

作者下拉列表创建了以下调用:

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

who参数表示只列出至少具有“作者”角色的用户,而the Codex page表示当前它是“作者”或空(表示所有用户)。 此功能的过滤器但它将HTML作为输入。您可以为用户创建新查询,然后输出新的HTML下拉列表。这是解决问题的第一种方法。

然而,这个'who'设置为'authors'的函数搜索级别不为0的用户,这很奇怪,因为很久以前用户级别已被弃用。我在Trac上发现a related bug report建议您为您的新角色添加'level_1'功能以解决此问题。这不是一个干净的解决方案,但比从头开始创建过滤器和所有HTML要容易得多。

编辑:我想到了第三个甚至更简单的解决方案:我已经使用插件创建了自定义角色,但从未发现过这个问题,因为我始终从现有角色复制功能,然后修改它们。这样你就不会忘记任何功能,它也会修复这个错误。