У меня есть пользовательский цикл, который я использую для отображения некоторых списков недвижимости, которые будут доступны в течение 60 дней. Я вызываю с помощью следующей функции:
<?php
$sixtydays = date('Y/m/d', strtotime('+60 days'));
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$query = new PostsOrderedByMetaQuery(array(
'post_type' => array('post', 'real-estate'),
'meta_key' => 'Time Available',
'meta_compare' => '<=',
'meta_value' => $sixtydays,
'paged' => $paged,
'orderby_meta_key' => 'Price',
'orderby_order' => 'ASC'
));
?>
<?php while ($query->have_posts()) : $query->the_post(); ?>
Хотя цикл отлично работает, я не могу заставить его разбивать на страницы. Он показывает первые 10 постов (по умолчанию), но не показывает нумерацию страниц. Единственный способ отобразить все сообщения — это показать их на одной странице, добавив 'posts_per_page' => -1.
У меня есть похожие циклы на других страницах, которые не имеют проблем с разбиением на страницы. Единственная разница с этим состоит в том, что есть два мета-ключа, которые фильтруют сообщения.
Я использую WP Page Navi для этого и остальных моих страниц. Я закрываю цикл и добавляю пагинацию, используя следующий код:
<?php endwhile; ?>
<?php wp_pagenavi(); ?>
<?php wp_reset_query(); ?>
Как я могу исправить это?
WP Page Navi не отображается в постах с похожими запросами (отфильтрованные по нескольким мета-ключам). Он появляется на всех других страницах, таких как архивы, блоги и т.д.
Я использую это для пользовательской нумерации страниц:
Это решение, которое сработало:
Вы можете отобразить свой тип поста, используя этот метод, ваш пагинация может работать !!!
Я сталкивался с этой проблемой с PageNavi раньше. Мое решение — временно перехватить переменную $ wp_query и затем переназначить ее после закрытия цикла. Пример:
Последний шаг — переназначить переменную $ wp_query на то, что было изначально, а затем сбросить запрос.
wp_pagenavi()
теперь также принимает аргумент запроса, поэтому вместо перезаписи$wp_query
вы можете написатьwp_pagename( array( 'query' => $my_query ) )
.