Как фильтровать посты по автору в админке WordPress

|

Иногда в процессе разработки или администрирования сайта на WordPress возникает задача добавить возможность фильтрации записей по авторам в разделе «Все записи» админ-панели. Это особенно актуально, если на сайте много авторов, и нужно быстро найти контент конкретного пользователя без использования сторонних плагинов.

Почему стандартного фильтра по авторам может не хватать

По умолчанию WordPress предоставляет фильтр по авторам в списке записей, но он доступен только администраторам и редакторам. Иногда требуется расширить функционал, например, добавить фильтрацию для других ролей, кастомных типов записей или доработать внешний вид фильтра.

Также бывают случаи, когда нужно фильтровать записи по нескольким авторам одновременно или по определённым критериям, связанным с пользователями.

Добавляем фильтр по авторам в админке для кастомных типов записей

Рассмотрим, как добавить фильтр по авторам для кастомного типа записи wpreboot_post. Для этого нужно использовать хук restrict_manage_posts и добавить селектор авторов.

function wpreboot_add_author_filter_for_custom_post_type() {
    global $typenow;
    if ($typenow === 'wpreboot_post') {
        $users = get_users(['who' => 'authors']);
        echo '<select name="author" id="dropdown_author">';
        echo '<option value="">Все авторы</option>';
        foreach ($users as $user) {
            $selected = (isset($_GET['author']) && $_GET['author'] == $user->ID) ? 'selected' : '';
            echo "<option value=\"{$user->ID}\" $selected>{$user->display_name}</option>";
        }
        echo '</select>';
    }
}
add_action('restrict_manage_posts', 'wpreboot_add_author_filter_for_custom_post_type');

Этот код добавит выпадающий список авторов в админке для кастомного типа записи wpreboot_post. После выбора автора и нажатия кнопки «Фильтр» список записей обновится, показывая только записи выбранного автора.

Обработка фильтра — корректный запрос к базе

Для того чтобы фильтр корректно работал, необходимо дополнительно изменить запрос с помощью хука pre_get_posts. Это позволит правильно отфильтровать записи по выбранному автору.

function wpreboot_filter_posts_by_author_in_admin($query) {
    global $pagenow;
    $post_type = isset($_GET['post_type']) ? $_GET['post_type'] : '';
    if (is_admin() && $pagenow == 'edit.php' && $post_type == 'wpreboot_post' && isset($_GET['author']) && $_GET['author'] != '') {
        $query->set('author', intval($_GET['author']));
    }
}
add_action('pre_get_posts', 'wpreboot_filter_posts_by_author_in_admin');

Теперь админка будет корректно отображать записи по выбранному автору для кастомного типа wpreboot_post.

Фильтрация по нескольким авторам одновременно

Если есть задача фильтровать записи сразу по нескольким авторам, стандартный селектор не подходит, так как он позволяет выбрать только одного автора. Для реализации мультивыбора можно использовать расширенный селектор с поддержкой мультивыбора, например, Select2 или Chosen, подключить его стили и скрипты и доработать обработку параметров.

Пример упрощённого подхода без сторонних библиотек, где авторы перечисляются через запятую в GET-параметре authors:

function wpreboot_add_multiauthor_filter() {
    global $typenow;
    if ($typenow === 'wpreboot_post') {
        $users = get_users(['who' => 'authors']);
        $selected_authors = isset($_GET['authors']) ? explode(',', $_GET['authors']) : [];
        echo '<input type="text" name="authors" placeholder="ID авторов через запятую" value="' . esc_attr(implode(',', $selected_authors)) . '" style="width:200px;"/>';
    }
}
add_action('restrict_manage_posts', 'wpreboot_add_multiauthor_filter');

function wpreboot_filter_posts_by_multiple_authors($query) {
    global $pagenow;
    $post_type = isset($_GET['post_type']) ? $_GET['post_type'] : '';
    if (is_admin() && $pagenow == 'edit.php' && $post_type == 'wpreboot_post' && !empty($_GET['authors'])) {
        $authors = array_map('intval', explode(',', $_GET['authors']));
        $query->set('author__in', $authors);
    }
}
add_action('pre_get_posts', 'wpreboot_filter_posts_by_multiple_authors');

Такой способ позволяет фильтровать записи по нескольким авторам, указав их ID через запятую в поле фильтра. Это удобно, если нет желания подключать дополнительные библиотеки для мультивыбора.

Использование плагина Clearfy для расширенного управления админкой

Если хочется получить расширенные возможности фильтрации и управления отображением записей в админке без кастомного кода, можно рассмотреть плагин Clearfy Pro. Этот плагин предлагает массу инструментов для оптимизации и настройки WordPress, в том числе гибкие фильтры и управление колонками в админке.

Выводы и рекомендации

Фильтрация записей по авторам в админке — полезный инструмент для сайтов с большим количеством контента и авторов. С помощью простого кода можно добавить удобный селектор, который даст быстрый доступ к нужным записям. Для более сложных задач стоит рассмотреть расширенные методы и готовые решения, например, плагин Clearfy.

Практический совет: всегда проверяйте права доступа пользователей при добавлении фильтров в админке, чтобы не раскрывать лишнюю информацию.

WooCommerce: как автоматически удалять заказы по определённому статусу
31.05.2026
Как автоматически удалять неиспользуемые шорткоды в WordPress
16.02.2026
Установка и настройка WPRemark для автоматического комментирования в WordPress
03.02.2026
Как сделать автоматический откат изменений при ошибках в WordPress
22.02.2026
Как разделить длинный пост на страницы в WordPress: пошаговое руководство
05.04.2026
×
WordPress
дай сайту суперсилу!

Скидки на топовые темы и плагины

Активировать суперсилу ⋙