Intereting Posts
Использование is_main_query для выбора персонализированного типа сообщения на определенной странице Что я могу заменить '.get_bloginfo (' url ').' для возврата текущего URL-адреса вместо домашнего адреса? Как присоединиться к запросу $ wpdb с метафорой пользователя, используя значение по умолчанию, если оно не существует? Лучшие практики для полностью настраиваемой домашней страницы – без плагинов Добавить мета значение, если администратор, редактор или любой другой пользователь открыл сообщение в режиме редактирования Ajax не работает (ожидается 0) Отображать все сообщения в настраиваемом типе сообщений, сгруппированные по пользовательской таксономии. Как сортировать сообщения по алфавиту и условия по ID? Как мой сайт WP был взломан Где WordPress Mu DB хранит ссылку панели управления сетевого администратора Сложные параметры Orderby: как запросить с несколькими параметрами orderby с помощью meta_value_num? просмотр моих сообщений на статической странице? Как показать несколько экземпляров виджета WP125? Как изменить Wp Зарегистрироваться / Войти URL-адрес на мою персональную страницу Ошибка базы данных WP для комментариев_popup_link () Как форматировать настраиваемые поля при редактировании вложения?

Как я могу заставить wp-pagenavi работать с настраиваемым запросом, основанным на представлении формы?

Я также разместил это на форумах поддержки WordPress, для плагина wp-pagenavi для scribu:

http://wordpress.org/support/topic/plugin-wp-pagenavi-custom-query-form-submit-part-2?replies=1

Моя ситуация:

Я использую форму для создания пользовательского запроса, который отображает сообщения из специального архива типа сообщения, соответствующего определенному настраиваемому полю (например: для столбцов «custom-post-type» показывать только сообщения, которые имеют значение «настраиваемого поля», выбранное из форма). Я знаю, это называется фильтрацией: P

Мой собственный архив типа сообщений выглядит следующим образом:

www.example.com/custom-post-type-archive

(обратите внимание, что я использую настройку постоянной ссылки «post name»)

После подачи формы новый URL-адрес таков:

www.example.com/custom-post-type-archive?key=value

Пользовательский запрос настроен для отображения только сообщений со значением ключевого настраиваемого поля:

 $value = $_GET['value']; $paged = get_query_var('page'); $args = array( 'post_type' => 'custom-post-type', 'meta_key' => 'key', 'meta_value' => $value, 'paged' => $paged, 'posts_per_page' => 10 ); $my_query = new WP_Query($args); 

После цикла у меня есть:

 wp_pagenavi(array('query' => $my_query)); wp_reset_postdata(); 

Запрос работает, я получаю правильные результаты. Но у меня проблемы с разбивкой по страницам. Когда я перехожу на следующую страницу, я получаю этот URL:

www.example.com/custom-post-type-archive/page/2?key=value

но разбиение на страницы по-прежнему показывает, что я на первой странице, и результаты одинаковы.

Если я вручную введите:

www.example.com/custom-post-type-archive?key=value&page=2

Я получаю правильные результаты (со страницы 2), но все навигационные ссылки совпадают с введенным мной вручную.

Пожалуйста, помогите (подсказки, ресурсы, что угодно).

Thx, Radu

Solutions Collecting From Web of "Как я могу заставить wp-pagenavi работать с настраиваемым запросом, основанным на представлении формы?"

Вы можете попробовать выполнить разбиение на страницы на основе ajax для плагина wp-pagenavi (см. http://wordpressapi.com/2011/05/16/add-ajax-pagination-in-wordpress-blog/ для справки). Я думаю, что это решит вашу проблему.

Поскольку это происходит в поиске, я хотел бы указать, что WP Page Navi (начиная с версии 2.74) теперь поддерживает пользовательские запросы.

В FAQ WP_Pagenavi часто ссылаются на следующую статью, чтобы объяснить, как использовать плагин Pagenavi со вторичным запросом , передав wp_pagenavi() параметр запроса.

Из учебника:

 $my_query = new WP_Query(); while ( $my_query->have_posts() ) : $my_query->the_post(); the_title(); // more stuff here endwhile; wp_pagenavi( array( 'query' => $my_query ) ); wp_reset_postdata(); // avoid errors further down the page 

Вероятно, проблема уже решена здесь: https://stackoverflow.com/a/13216165/1801379

Вы также получите некоторые идеи отсюда: https://wordpress.stackexchange.com/a/4131/23290

Вот решения, которые я нашел (обратите внимание, что я использую WP 3.3.2 и WP-Pagenavi 2.82):

Решение 1. Использование paged вместо page в качестве параметра get_query_var .

Решение 2 Использование навигации на основе ajax, как и в статье, указывает swtshweta. (используя Ajax, разбиение на страницы работает правильно даже с параметром page ).

Странно, что предложенный ответ ничего не показывает в моем браузере. У меня есть последний WP и последний браузер Chrome. Спасибо, в любом случае.

Хотя wp_pagenavi отображается правильно, а ссылки показывают / page2 /, / page3 и т. Д., И я добавил атрибут $ paged или $ page для моего wp_query, всегда появляется первая страница.

Radu. Для меня работало следующее решение: я изменил стандартный код подкачки и сделал его отправкой «& page = xxx» и перехватил $ page в качестве переменной представления формы. Теперь он отлично работает.

Обратите внимание на последнюю строку, здесь произошли изменения.

 global $paged; $paged = ($_GET["page"]) ? ($_GET["page"]) : 1; //this is where I catch the requested page function pagenavi( $found_posts, $p = 2 ) { // pages will be show before and after current page if ( is_singular() ) return; // don't show in single page global $paged; $max_page = intval($found_posts / 10) + 1; echo('max_page=' . $max_page); if ( $max_page == 1 ) return; // don't show when only one page if ( empty( $paged ) ) $paged = 1; echo '<span class="pages">Page: ' . $paged . ' of ' . $max_page . ' <BR></span> '; // pages if ( $paged > $p + 1 ) p_link( 1, 'First' ); if ( $paged > $p + 2 ) echo '... '; for( $i = $paged - $p; $i <= $paged + $p; $i++ ) { // Middle pages if ( $i > 0 && $i <= $max_page ) $i == $paged ? print "<span class='page-numbers current'>{$i}</span> " : p_link( $i ); } if ( $paged < $max_page - $p - 1 ) echo '... '; if ( $paged < $max_page - $p ) p_link( $max_page, 'Last' ); } function p_link( $i, $title = '' ) { if ( $title == '' ) $title = "Page {$i}"; echo "<a class='page-numbers' href='", esc_html( $_SERVER['REQUEST_URI'] . '&page=' .$i ), "' title='{$title}'>{$i}</a> "; 

}