Здравствуйте!
Вообще немного всё запутано:
Имеем страницу
/articles/
с рабочей пагинацией, и страницу
/multimedia/
, на которой при переходе на страницу пагинации получаем 404 ошибку.
Если скопировать целиком код из
/articles/
в
/multimedia/
- то в
/multimedia/
пагинация всё равно не работает :) Магия какая-то.
Я заметил, что на рабочей странице запрос выглядет так:
SELECT wp_posts.* FROM wp_posts WHERE 1=1 AND (wp_posts.ID = '43') AND wp_posts.post_type = 'page' ORDER BY wp_posts.post_date DESC
А где пагинация не работает, так:
SELECT wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.post_name = 'page' AND wp_posts.post_type = 'multimedia' ORDER BY wp_posts.post_date DESC
Т. е. к запросу почему-то добавляется условие
wp_posts.post_name = 'page'
Код везде одинаковый, и сводится к такому виду: (пробовал не перезаписывать глобальную переменную - не помогло)
$global_wp_query = $wp_query;
$paged = get_query_var('paged') ? absint(get_query_var('paged')) : 1;
$wp_query = new WP_Query([
'posts_per_page' => 15,
'post_type' => 'post', // В мультимедиа здесь - multimedia.
// Пробовал добавлять это в запрос - ничего не менялось.
// 'post_name' => '',
// 'name' => '',
'paged' => $paged,
]);
while ($wp_query->have_posts()) : $wp_query->the_post();
// Манипуляции с выводом превью
endwhile; wp_reset_postdata();
// Ну и вывод самой пагинации.
the_posts_pagination([
'total' => $wp_query->max_num_pages,
'mid_size' => 3,
'prev_next' => true,
'prev_text' => '←',
'next_text' => '→',
]); $wp_query = $global_wp_query
В
functions.php
никаких манипуляций с пагинацией не производилось, кроме как изменение внешнего вида:
add_filter('navigation_markup_template', function ($template, $class) {
return
'<nav class="navigation %1$s" role="navigation">'.
' <div class="nav-links">%3$s</div>'.
'</nav>';
}, 10, 2);
"Настройки постоянных ссылок" сбрасывал; гугление не помогло, всякие советы насчёт количества постов в настройках и прочие - никак не помогают.
Ну и очень интересно, почему один и тот же код на одной странице (
/articles/
) работает корректно, а на другой (
/multimedia/
) - нет :)