问题描述

我想要能够在管理员中选择一个作者的作者,所以它显示他们的名字是写的,但我不想给他们任何额外的权限 (如果他们登录唯一可以访问的是他们的个人资料) 。

有没有一个简单的方法来做,而不必改变角色和功能?

谢谢

最佳解决方案

这是我在类似情况下写的一个简单的黑客。它将在 Author 下拉列表中显示编辑/添加帖子/页面上的所有 Subscribers,从中可以选择任意一个。我觉得应该适合你

add_filter('wp_dropdown_users', 'MySwitchUser');
function MySwitchUser($output)
{

    //global $post is available here, hence you can check for the post type here
    $users = get_users('role=subscriber');

    $output = "<select id="post_author_override" name="post_author_override" class="">";

    //Leave the admin in the list
    $output .= "<option value="1">Admin</option>";
    foreach($users as $user)
    {
        $sel = ($post->post_author == $user->ID)?"selected='selected'":'';
        $output .= '<option value="'.$user->ID.'"'.$sel.'>'.$user->user_login.'</option>';
    }
    $output .= "</select>";

    return $output;
}

提交此提示后,WP 提交此页面后,WP 仅从 $ _POST 数组中的下拉列表中读取 $ user-> ID,并将其分配为帖子作者。这就是你想要的!

次佳解决方案

从 WordPress 4.4.0 起,您现在可以使用 wp_dropdown_users_args 过滤器。现在的代码要简单得多:

add_filter( 'wp_dropdown_users_args', 'add_subscribers_to_dropdown', 10, 2 );
function add_subscribers_to_dropdown( $query_args, $r ) {

    $query_args['who'] = '';
    return $query_args;

}

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。