Автоподгрузка (lazy loading) контента в админ-панели WordPress — удобная функция, которая динамически подгружает записи или элементы без перезагрузки страницы. Однако в некоторых случаях она может вызывать проблемы с производительностью, некорректное отображение данных или конфликты с плагинами. В этой статье разберёмся, как отключить автоподгрузку в админке WordPress, чтобы устранить подобные проблемы.
Что такое автоподгрузка в админ-панели WordPress и зачем её отключать
В админ-панели WordPress, например, на страницах «Записи» или «Страницы», с помощью AJAX часто реализована автоподгрузка — при прокрутке списка записей новые записи подгружаются автоматически, без перезагрузки страницы. Это помогает работать с большим количеством контента быстрее.
Однако на некоторых хостингах или при большом количестве плагинов автоподгрузка может привести к:
- Замедлению загрузки страниц админки;
- Ошибкам JavaScript и сбоям интерфейса;
- Неправильному отображению количества записей;
- Проблемам с совместимостью плагинов, например, с WPGPT или Clearfy Pro.
В таких случаях полезно отключить автоподгрузку и вернуться к классической пагинации с перезагрузкой страниц.
Отключение автоподгрузки через функции темы или плагина
Один из способов отключить AJAX автоподгрузку — добавить фильтр, который отменит поведение по умолчанию. В WordPress нет универсального хука для этого, так как автоподгрузка реализуется разными способами в ядре и плагинах, но можно принудительно отключить скрипты или изменить параметры запроса.
Пример решения для стандартного списка записей (постов)
Часто автоподгрузка в админке реализована через JavaScript или с помощью параметра ajax. Чтобы отключить её, можно убрать скрипт, который отвечает за автозагрузку:
add_action('admin_enqueue_scripts', 'adminwpstuff_disable_autoload_scripts', 100);
function adminwpstuff_disable_autoload_scripts() {
wp_dequeue_script('post-list'); // пример названия скрипта
}Однако такой способ зависит от темы и плагинов. Более универсальный метод — отключить AJAX-пагинацию с помощью фильтра на уровне запросов:
add_filter('wp_ajax_get-posts', 'adminwpstuff_disable_ajax_post_load');
function adminwpstuff_disable_ajax_post_load() {
wp_send_json_error(['message' => 'Автоподгрузка отключена']);
wp_die();
}<Этот код отключит AJAX-обработчик подгрузки постов, но может нарушить работу админки, если автоподгрузка используется активно. Лучше сначала протестировать на тестовом сайте.
Использование плагинов для управления автоподгрузкой и производительностью
Если вы не хотите вмешиваться в код, можно использовать плагины, которые помогают управлять автоподгрузкой и оптимизировать админку.
Clearfy Pro
Плагин Clearfy Pro предлагает опции для отключения различных AJAX-эффектов и автоподгрузки в админке, что помогает повысить скорость и устранить конфликты.
Adminimize
Хотя Adminimize не отключает автоподгрузку напрямую, он позволяет скрыть ненужные элементы админки, что косвенно уменьшает нагрузку и улучшает восприятие интерфейса.
Практические советы и рекомендации
Перед отключением автоподгрузки обязательно:
- Сделайте резервную копию сайта и базы данных.
- Проверьте, какие именно скрипты отвечают за подгрузку на вашей версии WordPress и используемых плагинах.
- Тестируйте изменения на тестовом или локальном окружении.
- Если используете кастомные плагины или темы, убедитесь, что они совместимы с отключением AJAX.
Если после отключения автоподгрузки вы заметили ухудшение удобства работы (например, необходимость часто перезагружать страницы), попробуйте альтернативу — оптимизировать запросы и использовать кэширование.
Код для отключения автоподгрузки в списках произвольных типов записей
Если у вас есть кастомные типы записей и автоподгрузка для них вызывает проблемы, можно отключить AJAX загрузку через фильтр на уровне запроса:
add_action('pre_get_posts', 'adminwpstuff_disable_ajax_for_custom_post_types');
function adminwpstuff_disable_ajax_for_custom_post_types($query) {
if (is_admin() && $query->is_main_query()) {
$screen = get_current_screen();
if ($screen && in_array($screen->post_type, ['custom_type_1', 'custom_type_2'])) {
// Отключаем AJAX-подгрузку, устанавливая параметр пагинации
$query->set('posts_per_page', 20);
remove_action('wp_ajax_load_more', 'ajax_load_more_callback'); // пример
}
}
}Замените custom_type_1 и custom_type_2 на свои типы записей. Этот код отключит AJAX-загрузку и заставит админку использовать стандартную пагинацию.
Выводы по теме отключения автоподгрузки в админке WordPress
Отключение автоподгрузки — это эффективный способ решить проблемы с производительностью и интерфейсом в админке, особенно если вы работаете с большим количеством записей или сложной структурой сайта. Главное — подходить к этому осознанно, тестировать изменения и использовать готовые решения, такие как Clearfy Pro, чтобы не ломать удобство работы.