Wordpress:如何将用户块添加到新的帖子类型

时间:2013-10-13 06:10:46

标签: wordpress

我将在我的wordpress中创建一个名为“Food”的新帖子类型,我需要在这个帖子类型中添加任何新帖子到我网站的用户注册。

所以当我在帖子类型“食物”中添加新帖子时,我需要为哪个用户选择此帖子。

如何做到这一点。

thankx

1 个答案:

答案 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');

希望它适合你,它对我有用。可能有更好的,如果你遇到它,请在这里发布:)