Создана собственная тема на WordPress (6.0.1), т.е. натянута собственная верстка на CMS. Создан собственный тип постов через register_post_types(). Тип постов - articles, slug изменен через rewrite на "полезные_статьи".
Для вывода постов создана отдельная страница, куда посты выводятся посредством WP_Query. URL этой страницы совпадет со slug-ом типа поста (т.е. и slug, и URL = 'полезные_статьи'). И вроде все работает, но когда начинаешь подключать пагинацию - сталкиваешься с проблемой. Если подключить пагинацию через paginate_links(), то она отобразится, но работать должным образом не будет - переход на любую из страниц пагинации будет выдавать нам 404 страницу. При этом, если мы меняем slug типа постов, или URL страницы, например, на 'статьи' (т.е. делаем их различающимися) - то пагинация начинает работать верно!
Можно было бы все оставить так, однако при переходе на страницу конкретного поста данного типа в URL мы будем видеть то, что указано в slug (например, '/полезные_статьи/название_статьи/'), тогда как страница, куда наши посты выводятся, будет иметь URL '/статьи/'. Нелогично, может сбить с толку, да и наверняка могут быть вопросы у поисковиков.
По большому счету, вопрос в следующем: как правильно подключить пагинацию к странице с выводом постов кастомного типа через WP_Query? Все описанное в интернет уже попробовал, где-то встречал мнение, что пагинацию к кастомным постам вообще подключить нельзя. Где я ошибаюсь?
UPD 22.08.22. Добавил пример кода.
<div class="articles-list row">
<?php
$current = absint(max(1, get_query_var( 'paged' ) ? get_query_var( 'paged' ) : get_query_var( 'page' )));
$query = new WP_Query([
'post_type' => 'articles',
'posts_per_page' => 9,
'paged' => $current,
]);
if ( $query->have_posts() ) {
while ( $query->have_posts() ) {
$query->the_post(); ?>
<div class="col-lg-6 articles-item">
<div class="content">
<div class="pic">
<a href="<?php the_permalink() ?>">
<img src="<?php the_field("article_pic_sqr"); ?>" class="img-fluid">
</a>
</div>
<div class="preview">
<div class="title">
<a href="<?php the_permalink() ?>"><?php the_title(); ?></a>
</div>
<div class="description"><?php the_excerpt() ?></div>
<a href="<?php the_permalink() ?>" class="basic-button basic-button--white">Читать статью</a>
</div>
</div>
</div>
<?php
}
wp_reset_postdata();
}?>
<div class="pagination">
<?php
// Выводим пагинацию, если записей больше запрошенного количества
echo paginate_links([
'prev_next' => true,
'prev_text' => __( '«' ),
'next_text' => __( '»' ),
'total' => $query->max_num_pages,
'current' => $current,
])
?>
</div>
</div>