В JournalX бесконечная подгрузка удобна не всегда. На главной, в рубриках или в кастомных выборках она может мешать аналитике, ломать ожидаемую пагинацию, усложнять индексацию и делать отладку шаблонов заметно тяжелее. Если вам нужен предсказуемый список записей с обычными страницами, проще отключить infinite scroll точечно, а не трогать тему целиком.
Когда проблема действительно в бесконечной подгрузке
Сначала стоит убедиться, что дело не в кэше, а в поведении самой темы. Типичный сценарий выглядит так: на архиве или главной странице при прокрутке вниз подгружаются новые записи, URL не меняется, а элементы списка добавляются через AJAX. Для редакции это удобно, но для некоторых проектов это мешает:
- страницы плохо делятся на понятные блоки для аналитики;
- пользователь не видит привычную навигацию по страницам;
- сложнее контролировать, какие записи попадают в первый экран;
- при кастомных фильтрах и виджетах подгрузка может вести себя не так, как ожидается.
Диагностика перед правкой
Проверьте три вещи: включён ли infinite scroll в настройках темы, не переопределяет ли его дочерняя тема, и не подменяет ли поведение сторонний плагин. Если у вас подключён кэш, очистите его перед тестом. Иначе можно долго искать несуществующую ошибку в коде.
Откройте страницу в приватном окне и прокрутите вниз. Если новые записи догружаются без перехода на следующую страницу, значит, отключать нужно именно механизм бесконечной подгрузки, а не шаблон архива как таковой.
Какой способ отключения выбрать
Для JournalX обычно есть три практических пути: настройка в админке, правка через дочернюю тему и точечное отключение через код. Если задача временная, начните с настроек. Если нужно отключить поведение только на части страниц, лучше использовать код. Если вы работаете с кастомным шаблоном, код даёт больше контроля.
| Способ | Когда подходит | Минус |
|---|---|---|
| Настройки темы | Нужно отключить поведение без кода | Не всегда даёт точечный контроль |
| Дочерняя тема | Нужна правка шаблона или логики | Требует аккуратного обновления |
| Плагин для сниппетов | Нужно быстро внедрить код без правки файлов темы | Добавляется ещё один слой поддержки |
Пошаговое решение через код
Если в JournalX бесконечный скролл включается на уровне шаблона или скриптов темы, самый безопасный путь — отключить соответствующую логику в дочерней теме. Ниже пример, который убирает подключение скрипта бесконечной подгрузки на фронтенде. Название handle у темы может отличаться, поэтому сначала его нужно проверить в исходном коде страницы или в файлах темы.
<?php
add_action( 'wp_enqueue_scripts', function () {
if ( is_admin() ) {
return;
}
// Пример: если тема подключает отдельный скрипт infinite scroll.
// Замените 'journalx-infinite-scroll' на реальный handle из вашей установки.
wp_dequeue_script( 'journalx-infinite-scroll' );
wp_deregister_script( 'journalx-infinite-scroll' );
}, 100 );Этот вариант полезен, если скрипт подгружается отдельно и именно он отвечает за AJAX-подгрузку. Но если тема завязала infinite scroll на общий файл архива, одного удаления скрипта может быть недостаточно. Тогда нужно отключать сам режим в шаблоне или через фильтр, если он предусмотрен темой.
Если в вашей установке JournalX есть настройка через фильтр или опцию темы, логика будет похожей: вы принудительно переводите архивы на обычную пагинацию. Пример ниже показывает, как можно подменить значение опции, если тема читает его через get_theme_mod() или get_option(). Имя настройки нужно сверить в коде темы.
<?php
add_filter( 'theme_mod_journalx_infinite_scroll', function( $value ) {
return false;
} );Если тема использует не theme_mod, а опцию из базы, фильтр будет другим. Смысл тот же: вернуть false для режима бесконечной подгрузки и оставить стандартную пагинацию WordPress.
Как отключить infinite scroll только на главной или в выборке записей
Часто не нужно выключать подгрузку везде. Например, на главной редакция хочет обычную пагинацию, а в рубриках оставить бесконечный скролл. В таком случае логика должна проверять тип страницы.
<?php
add_action( 'wp_enqueue_scripts', function () {
if ( is_admin() ) {
return;
}
if ( is_front_page() || is_home() ) {
wp_dequeue_script( 'journalx-infinite-scroll' );
wp_deregister_script( 'journalx-infinite-scroll' );
}
}, 100 );Если у вас кастомная выборка записей в шаблоне через WP_Query, лучше вообще не завязываться на infinite scroll для этого блока. Обычная пагинация в таком случае надёжнее и проще в сопровождении.
<?php
$paged = max( 1, get_query_var( 'paged' ) );
$query = new WP_Query( array(
'post_type' => 'post',
'posts_per_page' => 10,
'paged' => $paged,
) );
if ( $query->have_posts() ) {
while ( $query->have_posts() ) {
$query->the_post();
get_template_part( 'template-parts/content', get_post_format() );
}
echo paginate_links( array(
'total' => $query->max_num_pages,
'current' => $paged,
) );
wp_reset_postdata();
}Проверка результата после внедрения
После правки не ограничивайтесь визуальной проверкой. Нужно убедиться, что тема действительно перестала догружать записи и что пагинация работает как обычные страницы.
- Откройте главную или архив в приватном окне.
- Прокрутите страницу вниз и проверьте, что новые записи не подгружаются автоматически.
- Нажмите на следующую страницу, если пагинация отображается.
- Проверьте исходный код страницы: не должен оставаться подключённый скрипт, который отвечает за infinite scroll, если вы его отключали.
- Очистите кэш плагина, сервера и CDN, если они используются.
Если вы отключали только часть страниц, проверьте и исключения. Например, главная должна вести себя по-новому, а рубрики — по старому, если именно так вы задумали.
Частые ошибки и как их исправить
Скрипт отключили, а подгрузка осталась
Это значит, что логика infinite scroll сидит не только в отдельном JS-файле. Иногда тема использует общий скрипт архива или inline-настройки. В таком случае ищите не только wp_enqueue_script, но и шаблон, где выводится контейнер под AJAX-подгрузку.
Пагинация пропала совсем
Так бывает, если вы убрали скрипт, но не включили стандартную навигацию в шаблоне. Для архивов должен остаться вывод paginate_links() или the_posts_pagination(). Иначе список будет обрываться на первой странице.
Изменения не видны после правки
Почти всегда виноват кэш. Очистите кэш плагина, серверный кэш и, если есть, CDN. После этого проверьте страницу в режиме инкогнито.
Handle скрипта не совпал
Это частая ошибка при работе с темой. Название journalx-infinite-scroll в примере — ориентир, а не гарантия. Посмотрите, как скрипт называется в исходнике страницы или в functions.php темы.
Что учесть для безопасности и производительности
Если вы вносите правки через дочернюю тему, не редактируйте файлы родительской темы напрямую. Обновление может затереть изменения. Для точечных сниппетов удобнее использовать дочернюю тему или проверенный плагин для вставки кода, если в проекте уже есть такой процесс.
С точки зрения производительности обычная пагинация часто проще для браузера и предсказуемее для сервера, особенно на больших архивах. Но если у вас много страниц и тяжёлые карточки записей, проверьте, что пагинация не создаёт лишнюю нагрузку на запросы. В таких случаях помогает аккуратная оптимизация шаблона архива и кэширование.
Если вам нужно не только отключить бесконечный скролл, но и убрать дубли, почистить архивы и настроить индексацию, имеет смысл смотреть на комплексную оптимизацию темы и SEO-настроек. Для JournalX это особенно актуально, когда архивы активно используются как основной навигационный слой.
В итоге задача сводится к одному: отключить автоматическую подгрузку там, где она мешает, и оставить обычную пагинацию там, где она лучше контролируется. Если вы проверили handle скрипта, не забыли про шаблон и очистили кэш, решение обычно получается стабильным и без побочных эффектов.