Итак, мои пагинационные ссылки в основном работают. Я могу нажать на любое число и получить URL-адрес, например http://www.path.com/taxonomy/term/page/3
. И когда я вписываю номер страницы в форму с любой страницы, я попадаю туда, куда хочу ( например http://www.path.com/taxonomy/term/page/57/?page=35). Однако проблема начинается здесь, если я тогда go нажму на одну из ссылок страницы над формой. Допустим, я попал на страницу 35. Я нажимаю 36, я получаю URL http://www.path.com/taxonomy/term/page/36/?page=35, который по-прежнему показывает результаты для страницы 35, а не для страницы 36. Почему-то я думаю, что есть чтобы форма могла go использовать тот же формат ссылок, что и другие, поэтому она переходит прямо к странице / 35 вместо использования переменной запроса в URL. Но я недостаточно осведомлен, чтобы знать, возможно ли это с помощью формы, или как ее исправить, если она есть.
Вот мой код нумерации страниц:
if ( !function_exists( 'ansel_pagination' ) ) {
function ansel_pagination() {
global $wp_query;
$current = max( 1, get_query_var( 'paged' ) );
$links[] = ansel_archive_navigation_link( $current, 'current' );
$total = isset( $wp_query->max_num_pages ) ? $wp_query->max_num_pages : 1;
$big = 999999999; // need an unlikely integer
$translated = __( '', 'ansel' ); // Supply translatable string
if( $total > 1 ) {
if( !$current_page = get_query_var('paged') )
$current_page = 1;
if( get_option('permalink_structure') ) {
$format = 'page/%#%/';
} else {
$format = '&paged=%#%';
}
?>
<div class="row justify-content-center">
<div class="pagination_links" style="clear: both;">
Page: <?php echo paginate_links( array(
'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
'format' => $format,
'total' => $total,
'current' => max( 1, get_query_var('paged') ),
'aria_current' => 'page',
'show_all' => false,
'end_size' => 3,
'mid_size' => 1,
'prev_next' => true,
'prev_text' => __( '« Previous' ),
'next_text' => __( 'Next »' ),
'type' => 'plain',
'add_fragment' => '',
'before_page_number' => '<span class="screen-reader-text">'.$translated.' </span>',
'after_page_number' => '',
) ); ?>
</div>
</div>
<div class="row justify-content-center">
<form class="wpsp-page-nav-form" action="" method="get" style="text-align: center;">
<div class="col-6 offset-3">
<label for="sortby" class="wpsp-label wpsp-hidden" style="display: inline-block;">Jump to</label>
<input class="wpsp-input-number" type="text" placeholder="page..." size="15" name="page" style="display: inline-block; width: auto; background-color: #fff;"/>
<button class="btn" type="submit" style="display: inline-block;"><i class="fa fa-arrow-right" aria-hidden="true"></i></button>
</div>
</form>
</div>
<?php }
}
}
function ansel_archive_navigation_link( $page = false, $class = '', $label = '' ) {
if( ! $page )
return;
$classes = array( 'page-numbers' );
if( !empty( $class ) )
$classes[] = $class;
$classes = array_map( 'sanitize_html_class', $classes );
$label = $label ? $label : $page;
$link = esc_url_raw( get_pagenum_link( $page ) );
return '<a class="' . join ( ' ', $classes ) . '" href="' . $link . '">' . $label . '</a>';
}
Изменить, чтобы добавить: I только что обнаружил, что у меня есть дополнительная проблема на странице результатов поиска: она показывает номера страниц просто отлично. Но если я нажму на любую из них, она все равно покажет первую страницу результатов.
Редактировать 2: Если я изменю метод формы на «публикация», я могу нормально перемещаться, независимо от того, нажмем ли на номер страницы или введите номер страницы, но это на самом деле не меняет URL. Другими словами, допустим, я перешел на страницу 57. Тогда мой URL-адрес http://www.path.com/taxonomy/term/page/57. Затем я набираю число 46 в форме Перейти к. Я получаю отображение результатов для страницы 46, но у меня все еще есть URL-адрес http://www.path.com/taxonomy/term/page/57.