问题描述
我想要能够在管理员中选择一个作者的作者,所以它显示他们的名字是写的,但我不想给他们任何额外的权限 (如果他们登录唯一可以访问的是他们的个人资料) 。
有没有一个简单的方法来做,而不必改变角色和功能?
谢谢
最佳解决方案
这是我在类似情况下写的一个简单的黑客。它将在 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 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。