Intereting Posts
Создавайте собственные постоянные ссылки на YouTube для нескольких пользовательских типов сообщений API возвращает пустой ответ после установки и удаления WP-rest-api plugin WP Customizer – Предотвращение предварительного просмотра Не найдено (404) ошибка на странице администратора, CSS ушел в блог Добавьте URL из пользовательского поля в качестве «Лучшее изображение». Код не работает Пользовательское правило перезаписи для захваченного сообщения (правило перезаписи для перезаписи правила) Как удалить слово «Навигация» в верхней части основного меню мобильного устройства? Как реализовать два отдельных цветных изображения для каждого сообщения / страницы Изменение макета содержимого на основе иерархии меню Зависимость подключаемого модуля третьей стороны – как правильно загружать классы Стиль очереди только на некоторых страницах, не работающих Пользователь BuddyPress пользователя в профиле Удобная ссылка на прикрепленные изображения для определенной записи? Невозможно создать записи с WP DB Abstraction Plugin echo wp_editor для экрана с форматированием

функция paginate в архиве для персонализированного пост-типа

У меня есть пользовательский пост-тип для событий и используйте обычный шаблон archive.php для отображения всех предыдущих событий.

Дело в том, что я использую пользовательский запрос для моего события-после-типа внутри archive.php как это …

 <?php if ( is_post_type_archive('wr_event') ) : get_event_list( false, 'DSC' ); else: rewind_posts(); get_template_part( 'inc/posts' ); endif; ?> 

Функция get_event_list()

выглядит так …

 function get_event_list( $latest = true, $order = 'ASC' ) { echo '<ul class="event-items">'; $yesterday = time() - 24*60*60; $compare = $latest ? '>' : '<'; $args = array( 'post_type' => 'wr_event', 'posts_per_page' => 'posts_per_page' => is_archive() ? 16 : -1, 'meta_key' => 'event_date', 'orderby' => 'meta_value_num', 'order' => $order, 'meta_value' => $yesterday, 'meta_compare' => $compare ); $loop = new WP_Query( $args ); while ( $loop->have_posts() ) : $loop->the_post(); get_template_part( 'inc/event', 'item' ); endwhile; wp_reset_postdata(); echo '</ul>'; } 

Я использую ту же функцию get_event_list() в моем index.php чтобы перечислять все события – и по моему индексу я хочу перечислить ВСЕ их. Вот почему у меня есть posts_per_page => -1 .

В моем archives.php где я хочу использовать один и тот же шаблон, я хочу, однако, указать только 16 «событий» и подкачку под ними.

У меня есть следующая функция в моих functions.php , которая отлично работает в моем шаблоне поиска. Но это не для этого пользовательского архива.

 function get_pagination_links( $type = 'plain', $endsize = 1, $midsize = 1 ) { global $wp_query, $wp_rewrite; $wp_query->query_vars['paged'] > 1 ? $current = $wp_query->query_vars['paged'] : $current = 1; // Sanitize input argument values if ( ! in_array( $type, array( 'plain', 'list', 'array' ) ) ) $type = 'plain'; $endsize = (int) $endsize; $midsize = (int) $midsize; // Setup argument array for paginate_links() $pagination = array( 'base' => @add_query_arg('paged','%#%'), 'total' => $wp_query->max_num_pages, 'current' => $current, 'show_all' => false, 'end_size' => $endsize, 'mid_size' => $midsize, 'type' => $type, 'prev_next' => false ); return paginate_links( $pagination ); } 

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

Любые идеи о том, как сделать эту разбивку на страницы с моим архивом по-умолчанию?

Вот вам аналогия, чтобы помочь вам:

У вас есть книга, есть 500 слов на странице, и вы открываете книгу на странице и читаете. Затем раздайте книгу и передайте ее мне, попросив меня прочитать следующую страницу. Какая страница?

Вы сказали свой запрос, что хотите, и сколько на странице вы хотите, но нигде вы не указали, какую страницу вы хотите захватить, поэтому он всегда будет захватывать страницу 1.

http://codex.wordpress.org/Class_Reference/WP_Query#Pagination_Parameters

Сделайте это, используя paged запрос var.

Также подумайте об использовании фильтра pre_get_posts вместо создания целого нового запроса, чтобы вы могли полностью исключить весь WP_Query и pagination mess.

Функция get_event_list()

Должен выглядеть так …

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

Pagination Примечание: используйте get_query_var('page'); если вы хотите, чтобы ваш запрос работал на шаблоне страницы, который вы задали как статическую переднюю страницу. В переменной запроса 'page' также содержится pagenumber для отдельной разбитой страницы или страницы, которая включает в себя <!--nextpage--> Quicktag в опубликованном контенте.

Важная ссылка: WP_Query:

 function get_event_list( $latest = true, $order = 'ASC' ) { echo '<ul class="event-items">'; global $paged; // paged variable $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; // set paged $yesterday = time() - 24*60*60; $compare = $latest ? '>' : '<'; $args = array( 'post_type' => 'wr_event', 'posts_per_page' => 'posts_per_page' => is_archive() ? 16 : -1, 'meta_key' => 'event_date', 'orderby' => 'meta_value_num', 'order' => $order, 'meta_value' => $yesterday, 'meta_compare' => $compare, 'paged' => $paged // add paged variable in argument array ); $loop = new WP_Query( $args ); while ( $loop->have_posts() ) : $loop->the_post(); get_template_part( 'inc/event', 'item' ); endwhile; wp_reset_postdata(); echo '</ul>'; }