В современных темах и плагинах WordPress часто используется AJAX пагинация для плавной подгрузки контента без перезагрузки страницы. Это удобно для пользователей, но иногда возникает необходимость отключить AJAX пагинацию, например, для улучшения SEO, устранения конфликтов с другими скриптами или упрощения отладки.
Что такое AJAX пагинация и почему ее нужно отключать
AJAX пагинация — это технология, при которой при переходе между страницами постов или товаров содержимое обновляется динамически через JavaScript, без полной перезагрузки страницы. Это улучшает пользовательский опыт, но может создавать сложности:
- Поисковые системы могут некорректно индексировать контент.
- Могут возникать конфликты с другими плагинами или скриптами.
- Сложнее отлаживать и тестировать сайт.
Если вы столкнулись с подобными проблемами, отключение AJAX пагинации — правильное решение.
Как определить, что AJAX пагинация используется на сайте
Для начала нужно понять, что именно на вашем сайте отвечает за AJAX пагинацию. Обычно это делают темы или плагины, например:
- WooCommerce — использует AJAX для фильтрации товаров и пагинации.
- Плагины типа WP-PageNavi Ajax — добавляют AJAX пагинацию.
- Кастомные темы — могут реализовывать AJAX пагинацию самостоятельно.
Чтобы проверить, используется ли AJAX пагинация, откройте консоль браузера, перейдите на следующую страницу пагинации и посмотрите, происходит ли перезагрузка страницы или только динамическая подгрузка контента.
Отключение AJAX пагинации в WooCommerce
WooCommerce часто применяет AJAX при фильтрации и пагинации товаров. Чтобы отключить AJAX пагинацию, можно добавить следующий код в файл functions.php вашей темы или в плагин-«муфту»:
function wpsnippets_disable_ajax_pagination() {
if ( class_exists( 'WooCommerce' ) ) {
// Отключаем AJAX для пагинации
add_filter( 'woocommerce_product_filters_has_ajax_pagination', '__return_false' );
}
}
add_action( 'init', 'wpsnippets_disable_ajax_pagination' );Этот фильтр отключит AJAX пагинацию в стандартных WooCommerce фильтрах и пагинации.
Дополнительный способ — отключение AJAX скриптов
Если вышеуказанный способ не помог, можно просто отключить скрипты, отвечающие за AJAX пагинацию, например, так:
function wpsnippets_dequeue_woocommerce_ajax_scripts() {
wp_dequeue_script( 'wc-add-to-cart-variation' );
wp_dequeue_script( 'wc-cart-fragments' );
wp_dequeue_script( 'woocommerce' );
wp_dequeue_script( 'jquery-blockui' );
}
add_action( 'wp_print_scripts', 'wpsnippets_dequeue_woocommerce_ajax_scripts', 100 );Будьте осторожны — это может повлиять на другие функции WooCommerce.
Отключение AJAX пагинации в популярных плагинах
Если AJAX пагинация реализована плагином, часто в настройках плагина есть опция ее отключения. Если такой опции нет, можно отключить AJAX через фильтры или действия плагина, обратившись к документации.
Например, для плагина WP-PageNavi Ajax можно отключить AJAX следующим образом:
function wpsnippets_disable_wppagenavi_ajax() {
wp_dequeue_script( 'wppagenavi-ajax' );
}
add_action( 'wp_enqueue_scripts', 'wpsnippets_disable_wppagenavi_ajax', 20 );Как найти нужные скрипты для отключения
Чтобы понять, какие скрипты отвечают за AJAX пагинацию, откройте инструменты разработчика в браузере, перейдите во вкладку Network и посмотрите, какие AJAX-запросы отправляются при переключении страниц.
Также во вкладке Sources можно увидеть названия скриптов и их источники — это поможет написать правильные функции для отключения.
Ручное удаление AJAX пагинации из темы
В некоторых темах AJAX пагинация реализована кастомно. Тогда придется искать в коде темы JavaScript, отвечающий за динамическую подгрузку страниц, и отключать или модифицировать его.
Например, если в теме есть такой скрипт:
jQuery(document).on('click', '.ajax-pagination a', function(e) {
e.preventDefault();
// AJAX запрос для загрузки контента
});Можно удалить этот обработчик, либо изменить шаблон темы, чтобы ссылки в пагинации были обычными ссылками без JS.
Пример удаления обработчика в вашем скрипте
function wpsnippets_remove_ajax_pagination_handler() {
wp_add_inline_script( 'custom-theme-script', "jQuery(document).off('click', '.ajax-pagination a');" );
}
add_action( 'wp_enqueue_scripts', 'wpsnippets_remove_ajax_pagination_handler', 30 );Этот код отключит обработчик клика по ссылкам пагинации с классом ajax-pagination.
Выводы и рекомендации
Отключение AJAX пагинации — полезный навык для разработчиков и администраторов сайтов на WordPress. Это помогает решить проблемы с SEO и совместимостью скриптов.
Важно сначала понять, какой именно компонент отвечает за AJAX пагинацию, и уже затем применять меры — будь то фильтры, отключение скриптов или правка темы.
Используйте приведенные примеры кода как отправную точку, учитывая специфику вашего сайта и темы.