2016-05-16 7 views
0

Я хочу изменить список пользователей в раскрывающемся списке «Выбор автора» на странице редактирования сообщений для настраиваемого типа сообщений. Есть ли крючок фильтра, который я могу использовать для этого? Я не смог найти какую-либо информацию об крюке фильтра, который делает то, что я хочу.WordPress Фильтр для изменения списка авторов в поле для редактирования. Поле для авторов

Крючок должен (теоретически) позволить мне вернуть массив пользователей, и это будут пользователи, которые заполняют поле выбора внизу. Причина, по которой я хочу это сделать, заключается в том, что я могу условно отфильтровать пользователей по их роли для разных типов сообщений. Как администратор (или другие администраторы), я не хочу проверять, имеет ли пользователь определенную роль, прежде чем сделать их автором.

Пример кода:

add_filter('example_filter', 'my_custom_function'); 
function my_custom_function ($users){ 

    // Get users with role 'my_role' for post type 'my_post_type' 
    if('my_post_type' == get_post_type()){ 
     $users = get_users(['role' => 'my_role']); 
    } 

    // Get users with role 'other_role' for post type 'other_post_type' 
    if('other_post_type' == get_post_type()){ 
     $users = get_users(['role' => 'other_role']); 
    } 

    return $users; 
} 
+0

мы можем видеть ваш код? – surajsn

+1

Не знаете, почему этот вопрос получил downvoted ... Обновленный вопрос с некоторыми пояснениями и деталями вместе с некоторым примером кода. У меня сейчас нет кода в моей теме, потому что у меня нет фильтра для подключения. –

ответ

0

Вы можете использовать крюк 'wp_dropdown_users_args'.

Добавьте нижеприведенный фрагмент кода в файл functions.php вашей темы.

add_filter('wp_dropdown_users_args', 'change_user_dropdown', 10, 2); 

function change_user_dropdown($query_args, $r){ 
// get screen object 
$screen = get_current_screen(); 

// list users whose role is e.g. 'Editor' for 'post' post type 
if($screen->post_type == 'post'): 
    $query_args['role'] = array('Editor'); 

    // unset default role 
    unset($query_args['who']); 
endif; 

// list users whose role is e.g. 'Administrator' for 'page' post type 
if($screen->post_type == 'page'): 
    $query_args['role'] = array('Administrator'); 

    // unset default role 
    unset($query_args['who']); 
endif; 

return $query_args; 
} 

дайте мне знать, если это работает для вас или нет.

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

  • Нет связанных вопросов^_^