Пользователи с настраиваемыми ролями, которые не отображаются в поле выбора автора сообщения

Я использую функцию для создания новых пользовательских ролей и удаления некоторых значений по умолчанию. Однако они не отображаются в поле post author! Появляется только администратор, потому что они выбраны в качестве администратора. Любой пользователь с настраиваемой ролью не отображается. Любая идея, почему это будет происходить?

Вот моя функция:

// Add New User Roles function add_new_roles() { // New Roles To Be Added $new_roles = array( array( 'role' => 'senior_pastor', 'display' => 'Senior Pastor' ), array( 'role' => 'exec_pastor', 'display' => 'Executive Pastor' ), array( 'role' => 'assoc_pastor', 'display' => 'Associate Pastor' ), array( 'role' => 'elder', 'display' => 'Elder' ), array( 'role' => 'ministry_leader', 'display' => 'Ministry Leader' ) ); foreach($new_roles as $role){ add_role($role['role'], $role['display'], array( 'edit_published_posts' => true, 'upload_files' => true, 'create_product' => true, 'publish_posts' => true, 'delete_published_posts' => true, 'edit_posts' => true, 'delete_posts' => true, 'read' => true )); } // Old Roles To Be Removed $old_roles = array( 'subscriber', 'contributor', 'author' 'editor' ); foreach($old_roles as $role){ remove_role( $role ); } } add_action('after_switch_theme', 'add_new_roles'); 

Solutions Collecting From Web of "Пользователи с настраиваемыми ролями, которые не отображаются в поле выбора автора сообщения"

Обнаружено обходное решение ниже. Я предполагаю, что это связано с ошибкой в ​​ядре WordPress. Это отобразит ВСЕ пользователей в сообщениях, поэтому будьте осторожны.

 // Filter to fix the Post Author Dropdown function author_override( $output ) { global $post, $user_ID; // return if this isn't the theme author override dropdown if (!preg_match('/post_author_override/', $output)) return $output; // return if we've already replaced the list (end recursion) if (preg_match ('/post_author_override_replaced/', $output)) return $output; // replacement call to wp_dropdown_users $output = wp_dropdown_users(array( 'echo' => 0, 'name' => 'post_author_override_replaced', 'selected' => empty($post->ID) ? $user_ID : $post->post_author, 'include_selected' => true )); // put the original name back $output = preg_replace('/post_author_override_replaced/', 'post_author_override', $output); return $output; } add_filter('wp_dropdown_users', 'author_override'); 

кредит идет здесь

Да, действительно, это ошибка, о которой сообщается в билете # 16841 .

Тестирование с помощью 3.6-beta3, оно все еще существует … Обходной путь заключается в словах scribu :

[…] добавить level_1 к вашей роли.

Это PITA, учитывая, как давно устарели устаревшие уровни пользователей, но там вы идете.

И … он работает как рекламируемый;)


Для справки, это места, где wp_dropdown_users происходят в ядре:

экспорт, стол списка сообщений, мета-ящики, пользователи