Получать несколько сообщений о настраиваемых типах одновременно в запросе edit.php? Post_type

Я планирую настраиваемые функции типа сообщения для своей темы и должен иметь возможность отображать больше, чем один post_type в таблице обзора администратора. Этот запрос, который я предполагаю, может выглядеть как edit.php?post_type[]=theme_slide_nivo&post_type[]=theme_slide_other . На самом деле я этого не пытался, но я уверен, что это не сработает. Итак, ребята, можно ли добиться такого результата без взлома ядра?

Solutions Collecting From Web of "Получать несколько сообщений о настраиваемых типах одновременно в запросе edit.php? Post_type"

Я попробовал это, чтобы получить представление о проблемах, с которыми вы столкнетесь. Следующий код позволяет указать несколько типов сообщений с параметром multi_post_type :

 add_action( 'pre_get_posts', 'wpse12970_pre_get_posts' ); function wpse12970_pre_get_posts( &$wp_query ) { if ( is_admin() && array_key_exists( 'multi_post_type', $_GET ) ) { $wp_query->set( 'post_type', $_GET['multi_post_type'] ); add_filter( 'the_posts', 'wpse12970_the_posts', 10, 2 ); } } function wpse12970_the_posts( $posts, &$wp_query ) { $wp_query->set( 'post_type', $GLOBALS['post_type'] ); return $posts; } 

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

Счетчик в верхней части списка и пользовательские столбцы основаны только на одном типе сообщений. Если будет много результатов, поисковый вызов, вероятно, сломается.

Если вы хотите это сделать, вы должны создать свой собственный класс списка, дочерний WP_List_Table , например WP_Posts_List_Table но затем для нескольких типов сообщений. Поскольку edit.php загружает эту таблицу по умолчанию, и я не вижу способа ее перехвата, вы должны создать свою собственную замену edit.php в своем плагине и использовать это. Я думаю, что это выполнимо, и, наверное, интересно, но много работы.