Intereting Posts
Как поместить периоды и пространства для значений массива (мета-ключ) Brandoo WordPress не удалось обновить до WordPress 4.2.2 Пользовательские возможности для добавления, редактирования, удаления пользователей только определенной роли? wp_verify_nonce () зачем возвращать false? Различать сообщения и страницы в результатах поиска get_children () работает неправильно – только на один пост? Почему тема вставляет раздел комментариев, если я не сбрасываю свой пользовательский WP_Query? Изменение файлов ядра WordPress Темы WordPress для неполной установки или установки Содержимое короткого кода, не отображаемое на главной странице Как остановить $ wpdb от имени добавляемой базы данных in_category () работает в single.php, но не в page.php? Функции bp_core не работают в API-интерфейсе buddypress json Как добавить функциональность плагина в WordPress Frontend Menus Сообщение в блоге из hompage show по определенной категории и часу

Разбивка страниц не работает на главной странице

У меня есть страница с именем «share» с сложным циклом, который отлично работает. Эта страница находится в domain.com/share . Теперь мне нужно использовать эту страницу в качестве домашней страницы, поэтому я перешел в «Настройки -> Чтение» и выбрал эту страницу как статическую.

Проблема в том, что разбиение на страницы больше не работает. На фактической странице она отображается как domain.com/share/page/2 но теперь она отображается как domain.com/page/2 и она просто загружает один и тот же контент с первой страницы снова и снова, независимо от того, на какой странице вы находитесь ,

Я не делал никаких других изменений, просто выбрал эту страницу в качестве главной страницы. Каковы возможные решения здесь?

Я использую WP Pagenavi, если это имеет значение.

Это мой шаблон page.php :

 <? $paged = get_query_var('paged') ? get_query_var('paged') : 1; if (is_page('join')) $post_types = array('articles'); if (is_page('learn')) $post_types = array('actions'); if (is_page('share')) $post_types = array('articles', 'actions'); $category = get_query_var('category'); $type = get_query_var('type'); $args = array( 'post_type' => $post_types, 'paged' => $paged, 'tax_query' => array('relation' => 'AND') ); $taxonomies = array(); foreach ($post_types as $post_type) { foreach (get_object_taxonomies($post_type) as $tax) { if (array_search($tax, $taxonomies) === false) $taxonomies[] = $tax; } } foreach ($taxonomies as $taxonomy) { $all_terms = get_terms($taxonomy, array('fields' => 'names')); $query_terms = array(ucfirst($category), ucwords(str_replace('-', ' ', $type))); $cur_terms = array_values(array_filter(array_intersect($all_terms, $query_terms))); if (! empty($cur_terms)) { $args['tax_query'][] = array( 'taxonomy' => $taxonomy, 'terms' => empty($cur_terms) ? $all_terms : $cur_terms, 'field' => 'slug' ); } } if (is_page('join')) $args['posts_per_page'] = 36; $query = new WP_Query($args); get_header(); Theme::toolbar(); ?> <div class="center"> <div id="content"> <? if ($query->have_posts()): ?> <? while ($query->have_posts()): $query->the_post() ?> <? get_template_part('content') ?> <? endwhile ?> <? else: ?> <? endif ?> </div> </div> <? wp_reset_query(); Theme::pagination($query); get_footer(); ?> 

И это код разбивки на страницы в Theme :

 function pagination($query = null) { global $wp_query; if (empty($query)) $query = $wp_query; $is_paged = $query->max_num_pages > 1; ?> <? if ($is_paged): ?> <div class="center"><div id="pagination"><? wp_pagenavi(array('query' => $query)) ?></div></div> <? endif ?> <? } 

Я не тестировал это, но страница WP Query говорит:

Pagination Примечание: используйте get_query_var('page'); если вы хотите, чтобы ваш запрос работал на шаблоне страницы, который вы задали как статическую переднюю страницу.

Поэтому, возможно, вам это нужно:

 $page_number = get_query_var('page') ? get_query_var('page') : 1; [ ... ] $args = array( 'post_type' => $post_types, 'page' => $page_number, 'tax_query' => array( 'relation' => 'AND' ), ); 

Я использую этот код для разбивки на страницы. на index.php для цикла;

 <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> // add title,excerpt or permalinks <?php endwhile; ?> <?php pagination(); ?> <?php else : ?> <?php // no posts found message goes here ?> <?php endif; ?> 

чем добавить следующие строки в functions.php

 function pagination() { if( is_singular() ) return; global $wp_query; /** Stop execution if there's only 1 page */ if( $wp_query->max_num_pages <= 1 ) return; $paged = get_query_var( 'paged' ) ? absint( get_query_var( 'paged' ) ) : 1; $max = intval( $wp_query->max_num_pages ); /** Add current page to the array */ if ( $paged >= 1 ) $links[] = $paged; /** Add the pages around the current page to the array */ if ( $paged >= 3 ) { $links[] = $paged - 1; $links[] = $paged - 2; } if ( ( $paged + 2 ) <= $max ) { $links[] = $paged + 2; $links[] = $paged + 1; } echo '<div class="navigation"><ul>' . "\n"; /** Previous Post Link */ if ( get_previous_posts_link() ) printf( '<li>%s</li>' . "\n", get_previous_posts_link() ); /** Link to first page, plus ellipses if necessary */ if ( ! in_array( 1, $links ) ) { $class = 1 == $paged ? ' class="active"' : ''; printf( '<li%s><a href="%s">%s</a></li>' . "\n", $class, esc_url( get_pagenum_link( 1 ) ), '1' ); if ( ! in_array( 2, $links ) ) echo '<li>…</li>'; } /** Link to current page, plus 2 pages in either direction if necessary */ sort( $links ); foreach ( (array) $links as $link ) { $class = $paged == $link ? ' class="active"' : ''; printf( '<li%s><a href="%s">%s</a></li>' . "\n", $class, esc_url( get_pagenum_link( $link ) ), $link ); } /** Link to last page, plus ellipses if necessary */ if ( ! in_array( $max, $links ) ) { if ( ! in_array( $max - 1, $links ) ) echo '<li>…</li>' . "\n"; $class = $paged == $max ? ' class="active"' : ''; printf( '<li%s><a href="%s">%s</a></li>' . "\n", $class, esc_url( get_pagenum_link( $max ) ), $max ); } /** Next Post Link */ if ( get_next_posts_link() ) printf( '<li>%s</li>' . "\n", get_next_posts_link() ); echo '</ul></div>' . "\n"; } 

Вы сбрасываете запрос перед созданием разбивки на страницы, смотрите эти строки своего кода:

 wp_reset_query(); Theme::pagination($query); get_footer(); 

Из-за этого я больше не смотрел. Исправьте это и сообщите, устранит ли он проблему.

Я столкнулся с той же проблемой. И, наконец, я решил проблему.
Получение текущего номера пагинации

 <?php $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; ?> 

Для получения текущего номера страницы на статической главной странице (шаблон страницы) вы должны использовать переменную запроса «страница».

 <?php $paged = (get_query_var('page')) ? get_query_var('page') : 1; ?> 

Поэтому вы должны использовать get_query_var('page') вместо get_query_var('paged') .
Вы можете использовать is_front_page() если условие для запроса на is_front_page() . Подобно тому,

 <?php if(is_front_page()) { $paged = (get_query_var('page')) ? get_query_var('page') : 1; }else { $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; } 

Кредит здесь