Вопрос или проблема
Поиск по этой теме на этом сайте выдает много результатов, которые утверждают, что они решили эту проблему, но у меня совершенно другой опыт после реализации этих рекомендаций, как указано здесь:
- Как исправить пагинацию для пользовательских циклов?
- Пагинация не работает на статической странице
- https://stackoverflow.com/questions/14026467/pagination-on-static-front-page-wordpress
Вот мой код ниже:
// Получить текущую страницу и добавить в массив параметров пользовательского запроса
$custom_query_args['paged'] = get_query_var( 'page' ) ? get_query_var( 'page' ) : 1;
// Определить параметры пользовательского запроса
$custom_query_args = array(
'post_type' => 'post',
'posts_per_page' => '4',
'paged' => $custom_query_args['paged'],
'post_status' => 'published',
'cat' => '1',
);
// Создать пользовательский запрос
$blog_query = new WP_Query( $custom_query_args );
// Исправление пагинации
$temp_query = $wp_query;
$wp_query = NULL;
$wp_query = $blog_query;
?>
<?php if ( $blog_query->have_posts() ) : ?>
<?php /* Начало цикла */ ?>
<?php while ( $blog_query->have_posts() ) : $blog_query->the_post(); ?>
<?php get_template_part( 'content', get_post_format() ); ?>
<?php endwhile; ?>
<?php endif; // конец проверки have_posts() ?>
<?php // Сброс данных поста
wp_reset_postdata();
// Пагинация цикла пользовательского запроса
previous_posts_link( 'Старые записи' );
next_posts_link( 'Новые записи', $blog_query->max_num_pages );
// Сброс основного объекта запроса
$wp_query = NULL;
$wp_query = $temp_query;
?>
Когда я нажимаю на ссылку пагинации, отображаемую на главной странице, появляется ответ 404 Not Found. (Запрашиваемый URL /kobopulse/page/2/ не найден на этом сервере.)
Я использую последнюю версию WordPress. На странице настроек моя установка настроена на отображение статической главной страницы. Front-page.php — это мой пользовательский шаблон страницы для главной страницы.
Что мне нужно сделать по-другому.
Спасибо
Чтобы эта решение сработало, я просто включил красивые постоянные ссылки. Если вы активировали постоянные ссылки, но получаете ошибку сервера 404, это может означать, что файл .htaccess не активирован на вашем сервере. Следуйте шагам ниже, чтобы это исправить.
Как активировать файл .htaccess
Если у вас есть доступ к настройкам сервера, вы можете отредактировать конфигурацию, чтобы разрешить файлу .htaccess переопределять стандартные конфигурации веб-сайта. Откройте файл конфигурации по умолчанию для хоста apache2. Примечание: для этого шага вам нужны права sudo.
sudo nano /etc/apache2/sites-available/default
Когда вы окажетесь внутри этого файла, найдите следующий раздел и измените строку, которая говорит AllowOverride с None на All. Теперь раздел должен выглядеть так:
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
После того, как вы сохраните и выйдете из этого файла, перезапустите apache.
sudo service apache2 restart
Убедитесь, что это включено в вашем файле .htaccess:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Теперь все должно работать.
ссылка:
Я использую сервер ubuntu, но эта ссылка была полезной для меня.
Я проверил выше и похоже, что есть какая-то проблема с вашим разделом постоянных ссылок. Пожалуйста, обновите свои постоянные ссылки на пользовательские, чтобы это проверяло SEO-дружественную пагинацию, и вы не получите никаких 404.
Ответ или решение
Как исправить пагинацию для пользовательских циклов в front-page.php
Проблема, с которой вы столкнулись, касается настройки пагинации для пользовательских циклов в шаблоне front-page.php WordPress. При нажатии на ссылки пагинации вы получаете ошибку 404. Это может быть связано с несколькими аспектами, начиная от конфигурации вашего пермалинков и заканчивая правильным использованием параметров запроса в вашем коде.
1. Проверка настроек пермалинков
Первым шагом к решению вашего вопроса будет проверка настроек пермалинков:
- Зайдите в админ-панель WordPress.
- Перейдите в раздел "Настройки" -> "Постоянные ссылки".
- Убедитесь, что выбрана опция "Произвольная структура" или любая другая установлена, кроме "Простая".
- После изменения параметров обязательно нажмите на кнопку "Сохранить изменения". Это может обновить правила перезаписи и решить проблему с ошибкой 404.
2. Обновление .htaccess
Если ошибка продолжает возникать, необходимо убедиться, что файл .htaccess настроен правильно. Вот базовая структура, которой он должен следовать:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Если файл .htaccess отсутствует, вы можете создать его в корневой директории вашего сайта. Убедитесь, что сервер поддерживает файл .htaccess, и что у вас есть необходимые права доступа.
3. Настройка сервера
На некоторых серверах (особенно на Apache) могут быть установлены ограничения, предотвращающие работу .htaccess. Если вы используете сервер Ubuntu, выполните следующие шаги для активации .htaccess:
-
Откройте конфигурационный файл Apache:
sudo nano /etc/apache2/sites-available/000-default.conf
-
Найдите секцию
<Directory /var/www/>
и измените строкуAllowOverride None
наAllowOverride All
, чтобы разрешить использование .htaccess:<Directory /var/www/> Options Indexes FollowSymLinks MultiViews AllowOverride All Require all granted </Directory>
-
Перезапустите Apache для применения изменений:
sudo service apache2 restart
4. Проверка кода в front-page.php
В вашем коде вы правильно настраиваете переменные пагинации, но убедитесь, что запрос страницы (paged
) корректен:
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1; // Используйте 'paged' вместо 'page'
Убедитесь, что при инициализации вашего WP_Query вы передаете это значение:
$custom_query_args = array(
'post_type' => 'post',
'posts_per_page' => 4,
'paged' => $paged,
'post_status' => 'publish', // 'published' заменено на 'publish'
'cat' => 1,
);
Также проверьте использование wp_reset_postdata()
и дальнейшую настройку переменной $wp_query
— это гарантирует, что вы не повлияете на главный цикл WordPress.
Заключение
Следуя этим шагам, вы должны быть в состоянии исправить проблему пагинации на вашей главной странице, однако если всё ещё возникают проблемы, стоит проверить несовместимость с плагинами или другими настройками темы. Если вы используете много функционала, попробуйте отключить все плагины и посмотреть, решит ли это проблему. Удачи!