Intereting Posts
Только категории списков, содержащие записи определенного пользовательского типа сообщений Добавить пользовательское поле в поле комментариев ПОСЛЕ текстовой области НО ПЕРЕД отправкой кнопки Прокрутите через пользовательский тип сообщения, а затем покажите детям на каждой итерации API WP Customazation не сохраняет значение по умолчанию как добавить галочку для определения роли пользователя при регистрации wp Ответ Ajax всегда 0 Плагин не активируется Показать поисковый запрос на странице продукта WordPress отказывается отправлять почту, «… ваш хост может отключить функцию mail () Удалите пользовательский пул типа сообщения, но сохраняйте связанную категорию таксономии с постоянной позицией Ошибка пропущенного расписания Неправильный идентификатор Параметры по умолчанию post_per_page по умолчанию Как я могу перечислить все категории в пользовательском типе сообщений (таксономия)? Простая проверка формы для пользовательского типа сообщения в интерфейсе. Не работает

Фильтровать по почте в 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 ); } 

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

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

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