/page/2/ 404 ошибка
-
есть раздел новости. при переходите на страницы 404 ошибка. /novosti/page/2/
$paged = ( get_query_var( ‘paged’ ) ) ? absint( get_query_var( ‘paged’ ) ) : 1;
$program = new WP_Query(
array(
‘post_type’ => ‘novosti’,
‘orderby’ => ‘date’,
‘order’ => ‘ASC’,
‘posts_per_page’ => 6,
‘paged’ => $paged) );в интернете есть решения через function.php — мне ни один не помог
-
Вот зачем? Зачем изобретать велосипед, если движок сам, без костылей, поддерживает архивы кастомных типов записей?
@sergm87 вы в каком месте эту конструкцию написали?
шаблон archive-novosti.php
А оосновной запрос куда делся, по вашему? Пажинатор от него работает. Если хотите основной запрос скорректировать, надо хук pre get posts использовать
полный код
$paged = ( get_query_var( 'paged' ) ) ? absint( get_query_var( 'paged' ) ) : 1;
$program = new WP_Query(
array(
'post_type' => 'novosti',
'orderby' => 'date',
'order' => 'ASC',
'posts_per_page' => 6,
'paged' => $paged) );
// Обрабатываем полученные в запросе продукты, если они есть
if ( $program->have_posts() ) {
while ( $program->have_posts() ) {
$program->the_post();
?>
<li class="card_service articles_home__card_item">
<div class="card_service__head">
<img src="<?php the_field('new_img'); ?>" alt="">
<a href="<?php the_permalink(); ?>" class="btn_gray">Читать</a>
</div>
<h3><?php the_title(); ?></h3>
<p><?php the_field('news-short-name'); ?></p>
</li>
<?php } ?>
<? } ?>
</ul>
<?php if ( $program->max_num_pages > 1 ) : ?>
<div class="articles_home__bottom">
<div class="card_pagination">
<?php
$big = 999999999; // need an unlikely integer
echo paginate_links( array(
'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
'format' => '?paged=%#%',
'current' => max( 1, get_query_var('paged') ),
'total' => $program->max_num_pages,
'prev_text' => ' <svg width="29" height="29" viewBox="0 0 29 29" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M19.3898 22.507C20.0407 21.8561 20.0406 20.8008 19.3898 20.1499L13.568 14.3282L19.3898 8.50636C20.0406 7.85549 20.0406 6.80021 19.3898 6.14934C18.7389 5.49847 17.6836 5.49847 17.0328 6.14934L10.0324 13.1497C9.38155 13.8005 9.38155 14.8558 10.0324 15.5067L17.0328 22.507C17.6836 23.1578 18.7389 23.1578 19.3898 22.507Z" fill="#D5D8D5"/>
</svg>',
'next_text' => '<svg width="29" height="29" viewBox="0 0 29 29" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M19.3898 22.507C20.0407 21.8561 20.0406 20.8008 19.3898 20.1499L13.568 14.3282L19.3898 8.50636C20.0406 7.85549 20.0406 6.80021 19.3898 6.14934C18.7389 5.49847 17.6836 5.49847 17.0328 6.14934L10.0324 13.1497C9.38155 13.8005 9.38155 14.8558 10.0324 15.5067L17.0328 22.507C17.6836 23.1578 18.7389 23.1578 19.3898 22.507Z" fill="#D5D8D5"/>
</svg>'
) );
?>прочитал что slug не должен совпадать с адресом. где опеределние типа записи добавил
‘rewrite’ => array(
‘slug’ => ‘news’,
),теперь ошибки 404 нет, по при переходе на страницы всегда отображает первую novosti/page/2/
'post_type' => 'novosti',
При регистрации этого типа записи укажите в настройках ‘has_archive’ => true
и не нужно будет костыль делать
has_archive стоит
register_post_type( 'novosti', [
'label' => null,
'labels' => [
'name' => 'Новости', // основное название для типа записи
'singular_name' => 'Новости', // название для одной записи этого типа
'add_new' => 'Добавить новость', // для добавления новой записи
'add_new_item' => 'Добавление', // заголовка у вновь создаваемой записи в админ-панели.
'edit_item' => 'Редактирование', // для редактирования типа записи
'new_item' => 'Новое', // текст новой записи
'view_item' => 'Смотреть', // для просмотра записи этого типа.
'search_items' => 'Искать', // для поиска по этим типам записи
'not_found' => 'Не найдено', // если в результате поиска ничего не было найдено
'not_found_in_trash' => 'Не найдено в корзине', // если не было найдено в корзине
'parent_item_colon' => '', // для родителей (у древовидных типов)
'menu_name' => 'Новости', // название меню
],
'description' => '',
'public' => true,
'show_in_rest' => null, // добавить в REST API. C WP 4.7
'rest_base' => null, // $post_type. C WP 4.7
'menu_position' => null,
'menu_icon' => null,
'hierarchical' => true,
'supports' => [ 'title','editor','page-attributes' ], //
'has_archive' => true,
'rewrite' => true,
'query_var' => true,
'rewrite' => array(
'slug' => 'news',
),
] );get_query_var( ‘paged’ ) возвращает пустой результат на странице почему-то, поэтому всегда первая страница
Посмотрите что в $wp_query.
Сейчас вы делаете вторую выборку, которая не нужна на страницах архива, так как там уже есть основной запрос в котором все ваши новости.
Просто скопируйте код из шаблона категорий или archive.php
должно быть так
<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>тоесть без
$program->
- Тема «/page/2/ 404 ошибка» закрыта для новых ответов.