Intereting Posts
Получить термины, содержащие сообщения, которые, в свою очередь, относятся к другим терминам? пользовательские сообщения permalinks url rewriting Как добавить мета-окна на экран «Добавить новую почту»? Добавить класс Dropstrap dropdown в навигационное меню Различные таксономии.php для разных пользовательских типов сообщений Как отображать данные на странице архива? Я хочу отправить push-уведомление сразу после публикации нового сообщения Удаление вложенных папок из URL-адреса Тип пользовательской таксономии Paginate с wp_custom_pagination Родительские и детские категории Активация пользователя в wordpress Коллекция пользовательских типов сообщений, отображаемых в подменю Отключить внешний доступ к конечной точке API REST как создать файл php и загрузить его в сообщении WordPress? Как безопасно заставить get_theme_mod () использовать определенное значение get_option ("stylesheet")?

Исключить черновики во всех () представлениях edit.php

В представлении «Все» отображаются все сообщения, включая черновики в wp-admin/edit.php . Как я могу исключить сообщения с статусом проекта во всем представлении?

Параметр show_in_admin_all_list в функции register_post_status() определяет, включен ли данный статус сообщения во все представление таблицы сообщений.

Вероятно, самая короткая версия:

 add_action( 'init', function() use ( &$wp_post_statuses ) { $wp_post_statuses['draft']->show_in_admin_all_list = false; }, 1 ); 

но давайте не будем изменять глобальные переменные прямо так и переопределить статус draft по умолчанию:

 add_action( 'init', function() { register_post_status( 'draft', [ 'label' => _x( 'Draft', 'post status' ), 'protected' => true, '_builtin' => true, 'label_count' => _n_noop( 'Draft <span class="count">(%s)</span>', 'Drafts <span class="count">(%s)</span>' ), 'show_in_admin_all_list' => false, // <-- we override this setting ] ); }, 1 ); 

где мы используем приоритет 1, поскольку статус проекта по умолчанию зарегистрирован с приоритетом 0.

Чтобы избежать повторения настроек по умолчанию и поддержки возможных изменений настроек в будущем, мы могли бы использовать get_post_status_object() :

 add_action( 'init', function() { $a = get_object_vars( get_post_status_object( 'draft' ) ); $a['show_in_admin_all_list'] = false; // <-- we override this setting register_post_status( 'draft', $a ); }, 1 ); 

В приведенном ниже коде удаляются черновики сообщений из области администрирования в списке « Все» для типа post post.

Аргумент запроса all_posts со значением 1 добавляется к ссылке меню, чтобы убедиться, что мы применяем эту модификацию только при необходимости (ссылка « Все» под фильтрами post post ( Все, Mine, Published, Sticky, Scheduled, Drafts )). добавит этот параметр запроса для нас, но это не тот случай, когда вы нажимаете меню администратора, поэтому нам нужно добавить его сами.

Поместите код ниже в functions.php вашей темы или внутри плагина.

 // Add a query argument to the Posts admin menu. // This is used to ensure that we only apply our special filtering when needed. add_action( 'admin_menu', 'wpse255311_admin_menu', PHP_INT_MAX ); function wpse255311_admin_menu() { global $menu, $submenu; $parent = 'edit.php'; foreach( $submenu[ $parent ] as $key => $value ){ if ( $value['2'] === 'edit.php' ) { $submenu[ $parent ][ $key ]['2'] = 'edit.php?all_posts=1'; break; } } } // Hide draft posts from All listing in admin. add_filter( 'pre_get_posts', 'wpse255311_pre_get_posts' ); function wpse255311_pre_get_posts( $wp_query ) { $screen = get_current_screen(); // Ensure the the all_posts argument is set and == to 1 if ( ! isset( $_GET['all_posts'] ) || $_GET['all_posts'] != 1 ) { return; } // Bail if we're not on the edit-post screen. if ( 'edit-post' !== $screen->id ) { return; } // Bail if we're not in the admin area. if ( ! is_admin() ) { return; } // Ensure we're dealing with the main query and the 'post' post type // Only include certain post statuses. if ( $wp_query->is_main_query() && $wp_query->query['post_type'] === 'post' ) { $wp_query->query_vars['post_status'] = array ( 'publish', 'private', 'future' ); } }