Форма нумерации страниц создает неправильный URL - PullRequest
0 голосов
/ 09 марта 2020

Итак, мои пагинационные ссылки в основном работают. Я могу нажать на любое число и получить 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' => __( '&laquo; Previous' ),
               'next_text' => __( 'Next &raquo;' ),
               '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.

...