Проблема с пагинацией WordPress в шаблоне search.php
2 янв. 2018 г., 09:32:18
Просмотры: 359
Голосов: 1
У меня небольшая проблема - пагинация не работает в файле search.php
.
Я делаю запрос результатов через wp_Query
, используя код ниже.
Ссылки на страницы отображаются, но при нажатии на них получаю ошибку 404.
Мне сказали, что это происходит потому, что я делаю запрос на странице search.php
.
Код, который я использую, взят из документации WordPress по пагинации. Запрос длинный, но самое важное - эти две строки:
$paged = ( get_query_var( 'paged' ) ) ? absint( get_query_var( 'paged' ) ) : 1;
и
'paged' => $paged,
Полный запрос
if (isset($_GET['reg-prop-search-form'])){
$paged = ( get_query_var( 'paged' ) ) ? absint( get_query_var( 'paged' ) ) : 1;
$args = array(
'posts_per_page' => 9,
's' => $_GET['s'],
'post_type' => 'property',
'paged' => $paged,
'meta_query' => array(
'relation ' => 'AND',
array(
'key' => 'prop_area',
'value' => $area,
'compare' => $area_val,
),
array(
'key' => 'prop_city',
'value' => $city,
'compare' => $city_val,
),
array(
'key' => 'prop_type',
'value' => $type,
'compare' => $type_val,
),
array(
'key' => 'prop_rooms',
'value' => array( $fromrooms, $torooms ),
'type' => 'numeric',
'compare' => 'BETWEEN',
),
array(
'key' => 'prop_store',
'value' => array( $fromfloor, $tofloor ),
'type' => 'numeric',
'compare' => 'BETWEEN',
),
array(
'key' => 'prop_price',
'value' => array( $min, $max ),
'type' => 'numeric',
'compare' => $equal,
),
),
);
};
Это цикл
$the_query = new WP_Query( $args );
.....
<?php if( $the_query->have_posts() ): ?>
<?php while( $the_query->have_posts() ) : $the_query->the_post(); ?>
<?php get_template_part( 'content', 'search' ); ?>
<?php endwhile; ?>
<div id="pagination">
<?php
$big = 999999999;
echo paginate_links( array(
'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
'format' => '?paged=%#%',
'current' => max( 1, get_query_var('paged') ),
'total' => $the_query->max_num_pages
) );
?>
<?php echo paginate_links( $args ); ?>
</div>
<?php else : ?>
<?php get_template_part( 'no-results', 'search' ); ?>
<?php endif; ?>
<?php wp_reset_query(); // Восстанавливаем глобальные данные записи, перезаписанные the_post(). ?>
</div>
Комментарии
Похожие вопросы
0
ответов