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

У меня есть специальный тип сообщения, называемый «События», с помощью register_post_type. Теперь я пытаюсь создать подменю в «События», в котором будут отображаться события, отсортированные по определенным мета-ключам и мета-значениям. (Пример: показывать события, отмеченные как «приоритет»).

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

function rt_priority_event_add_submenu() { $sub_slug = 'edit.php?post_type=event&meta_key=event_priority&meta_value=true'; add_submenu_page('edit.php?post_type=event', 'Priority Events', 'Priority Events', 'manage_options', $sub_slug); 

}

Здесь настраивается настраиваемый тип сообщений Events:

 register_post_type( 'event', array( 'label' => 'Events', 'labels' => rt_ui_labels( 'Event', 'Events', 'redtri' ), 'public' => true, 'has_archive' => true, 'rewrite' => true, 'supports' => array( 'title', 'editor', 'excerpt', 'thumbnail'), ) ); 

Мне не нужны какие-либо новые причудливые столбцы или что-то еще – я просто хочу использовать те же самые столбцы, которые уже настроены в Events.

Спасибо заранее, и, пожалуйста, дайте мне знать, если вам нужна дополнительная информация!

Мета-ключ или мета-значение в параметре запроса автоматически не фильтруют запрос по умолчанию. Поэтому вам нужно отфильтровать запрос, чтобы ограничить результаты.

 add_filter('pre_get_posts', 'restrict_events_by_meta'); function restrict_events_by_meta($q){ if( $q->is_main_query() && is_admin() && 'event' == $q->get('post_type') && isset( $_GET['meta_key']) && isset( $_GET['meta_value']) ){ $q->set('meta_key', $_GET['meta_key'] ); $q->set('meta_value', $_GET['meta_value'] ); $q->set('orderby', 'meta_key' ); } }