我将在我的wordpress中创建一个名为“Food”的新帖子类型,我需要在这个帖子类型中添加任何新帖子到我网站的用户注册。
所以当我在帖子类型“食物”中添加新帖子时,我需要为哪个用户选择此帖子。
如何做到这一点。
thankx
答案 0 :(得分:0)
今天你很幸运,因为我正在做你所要求的事情:)
wordpress仅显示角色为author
的用户。基本上你必须删除authordiv
元框,添加另一个与原始authordiv
具有相同html的元框,找到具有正确角色/能力的用户并构建一个select,所以下面的代码是我的实现,你需要修改它以满足你的需要:
// add authordiv if user is admin or is allowed to change author of post !important
global $current_user;
if(in_array(array('administrator','change_post_author'), $current_user->allcaps))
add_meta_box('authordiv', 'Change Author', 'my_add_author_metabox', get_post_type(), 'side');
// make new author metabox that contains users that can manage this cpt
function my_add_author_metabox()
{
$post_type_name = isset($_GET['post_type']) ? $_GET['post_type'] : get_post_type($_GET['post']);
$roles = get_editable_roles();
// i unset these as they are never used
unset(
$roles['administrator'],
$roles['contributor'],
$roles['author'],
$roles['editor'],
$roles['subscriber']
);
// get role that manages this cpt
$cpt_name = '';
$cap = 'edit_' . $post_type_name;
foreach($roles as $role_name => $args){
if(array_key_exists($cap, $args['capabilities'])){
$cpt_name = $role_name;
break;
}
}
// get users that can manage this cpt
global $post;
$users = get_users('role=' . $cpt_name);
$author_id = $post->post_author;
$select = '
<label class="screen-reader-text" for="post_author_override">Change Author</label>
<select name="post_author_override" id="post_author_override" class="">
';
foreach($users as $user){
if($user->ID == $author_id)
$select .= "<option value=\"{$user->ID}\" selected=\"selected\">{$user->display_name}</option>";
else
$select .= "<option value=\"{$user->ID}\">{$user->display_name}</option>";
}
$select .= '</select>';
echo $select;
}
现在在我的cpt中我不支持author
但如果你这样做,那么当你author
或使用
supports
删除register_post_type()
remove_meta_box('authordiv');
希望它适合你,它对我有用。可能有更好的,如果你遇到它,请在这里发布:)