沃梦达 / 编程技术 / CMS教程 / 正文

php – WordPress:自定义用户没有出现在作者框中

我在Wordpress中添加了自定义用户类型,自定义帖子类型支持作者(见下文).自定义用户类型具有作者的所有权限,但“发布帖子”除外,但不在要分配给帖子的可能作者列表中.我究竟做错了什么?码:if (!get_role(member...

我在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');

}

如果需要更多信息,请与我们联系.

解决方法:

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

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要容易得多.

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

本文标题为:php – WordPress:自定义用户没有出现在作者框中

基础教程推荐