2013-10-13 3 views
0

Я создам новый тип сообщения в своем wordpress под названием «Продовольствие», и мне нужно добавить любое новое сообщение в этот тип сообщения для регистрации пользователя на моем сайте.Wordpress: Как добавить пользовательский блок в новый тип сообщения

поэтому, когда я добавляю новое сообщение в мое сообщение типа «Еда», мне нужно выбрать это сообщение, для которого пользователь.

как это можно сделать.

Thankx

+1

Ваш вопрос непонятен. Можете ли вы попытаться его повторить? Вы хотите создать нового пользователя с тем же именем, что и тип сообщения? Или наоборот? –

+0

@Chris Herbert Мне нужно показать весь пользовательский реестр на моем сайте с типом poste, чтобы добавить сообщение этому пользователю, так же, как новости, при добавлении новостей вам нужно добавить эту новость авторам – kamkam

+0

, вы имеете в виду, что у вас есть роль или добавлена возможности пользователю управлять настраиваемым типом сообщений, и вы хотите, чтобы эти пользователи отображались в мета-окне «авторы» на экране редактора сообщений? – gwillie

ответ

0

вам повезло сегодня, как я сейчас делаю то, что вы просите :)

WordPress отображает только пользователи с ролью author. в основном вам нужно удалить метатекс authordiv, добавить еще один мета-ящик с тем же html, что и исходный authordiv, найти пользователей с правильной ролью/возможностями и построить выбор, поэтому приведенный ниже код - это моя реализация, вам нужно будет изменить его на соответствии с вашими потребностями:

// 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; 

} 

сейчас в моей срг я не поддерживает author, но если вы делаете то или удалить author из supports, когда вы register_post_type() или использовать

remove_meta_box('authordiv'); 

надеюсь, он работает для вас, это работает меня. вероятно, лучше, и если вы когда-нибудь столкнетесь с этим, отправьте его сюда :)

Смежные вопросы