#WordPress #сайты
⁉ Задача. Есть стандартные записи WP и есть пользовательский тип записей. Создали шаблон single-selection.php в котором выводим список стандартных записей, исходя из настроек кастомного поста. Возникла проблема с пагинацией, а точнее со страницами пагинации — при переходе на /my-custom-page/page/2/ перенаправляло на первую страницу /my-custom-page/.
✅ Решение. Хук 'parse_query'.
/* Шаблон кастомного типа записи */
// Создаем WP_Query для выборки записей по таксономиям
$paged = get_query_var('paged') ? get_query_var('paged') : 1; // Определяем текущую страницу пагинации
$args = array(
'post_type' => 'post',
'tax_query' => $tax_query,
'posts_per_page' => (int) get_option('posts_per_page'),
'paged' => $paged
);
$query = new WP_Query($args);
if ( $query->have_posts() ) {
while ( $query->have_posts() ) :
$query->the_post();
get_template_part( 'template-parts/content-card');
endwhile;
wp_reset_postdata();
# Pagination
echo paginate_links(array(
'base' => get_permalink($post->ID) . '%_%',
'format' => 'page/%#%/',
'total' => $query->max_num_pages,
'current' => max(1, get_query_var('paged')),
'prev_text' => __('<span class="previous"></span>'),
'next_text' => __('<span class="next"></span>')
));
}
/* functions.php */
function qfurs_fix_request_redirect( $request ) {
if ( isset( $request->query_vars['post_type'] )
&& 'selection' === $request->query_vars['post_type']
&& true === $request->is_singular
&& - 1 == $request->current_post
&& true === $request->is_paged ) {
add_filter( 'redirect_canonical', '__return_false' );
}
return $request;
}
add_action( 'parse_query', 'qfurs_fix_request_redirect' );
💾 Подробнее
Присоединяйтесь — мы покажем вам много интересного
Присоединяйтесь к ОК, чтобы подписаться на группу и комментировать публикации.
Нет комментариев