Фильтровать по почте в Media Library

Я пытаюсь найти способ фильтровать медиа-библиотеку по категории сообщений, которой присвоен элемент мультимедиа. Я вижу, что вы можете сортировать «привязанным к», но это только немного меня подойдет. Какие-либо предложения?

Solutions Collecting From Web of "Фильтровать по почте в Media Library"

Вы можете использовать pre_get_posts для фильтрации запроса.

Так что вы можете

  1. получить категорию из запросов vars
  2. получить сообщение с этой категорией
  3. задайте медиа-запрос, чтобы включить только сообщение, имеющее такие записи как родительские

Чтобы дать пользовательский интерфейс, вы можете использовать hook_manage_posts для вывода раскрывающегося списка категории.

 add_action('pre_get_posts', 'my_filter_media_by_cat'); add_action( 'restrict_manage_posts', 'my_add_media_cat_dropdown' ); function my_filter_media_by_cat( $q ) { $scr = get_current_screen(); $cat = filter_input(INPUT_GET, 'postcat', FILTER_SANITIZE_STRING ); if ( ! $q->is_main_query() || ! is_admin() || (int)$cat <= 0 || $scr->base !== 'upload' ) return; // get the posts $posts = get_posts( 'nopaging=1&category=' . $cat ); // get post ids $pids = ( ! empty( $posts ) ) ? wp_list_pluck($posts, 'ID') : false; if ( ! empty($pids) ) { $pidstxt = implode($pids, ','); global $wpdb; // get the ids of media having retrieved posts as parent $mids = $wpdb->get_col("SELECT ID FROM $wpdb->posts WHERE post_parent IN ($pidstxt)"); if ( ! empty($mids) ) { // force media query to retrieve only media having retrieved posts as parent $q->set( 'post__in', $mids ); } else { // force media query to return no posts $q->set( 'p', -1 ); // let query found nothing } } } function my_add_media_cat_dropdown() { $scr = get_current_screen(); if ( $scr->base !== 'upload' ) return; $cat = filter_input(INPUT_GET, 'postcat', FILTER_SANITIZE_STRING ); $selected = (int)$cat > 0 ? $cat : '-1'; $args = array( 'show_option_none' => 'All Post Categories', 'name' => 'postcat', 'selected' => $selected ); wp_dropdown_categories( $args ); } 

Отрицательным для этого кода является то, что вам нужно запустить три запроса для фильтрации медиа …

Результат в пользовательском интерфейсе:

введите описание изображения здесь