Intereting Posts
Меню WordPress, в котором отображаются все сообщения в определенной категории, такие как w3schools Обновление файла WordPress Theme / Plugin POT без потери последовательности строк Измените страницу / 2 на / стенографию с помощью перезаписи Исключить тип сообщения из Jetpack Infinite Scroll Как получить сообщения по содержанию? Удалить виджет таксономии из сообщения «СТРАНИЦА» Добавить Piecemaker в WordPress Header Избегайте страниц, теряющих ассоциацию шаблонов при повторном развертывании сайта Как я могу скрыть столбцы администратора, показывающие дополнительные пользовательские поля таксономии? Отображение ошибок oEmbed? Пользовательские темы «Просмотр изменений» не работает для ранее опубликованных сообщений Как изменить меню администратора «Страницы» на что-то еще Предварительный просмотр шаблона страницы в реальном времени в WP Admin Установите значение по умолчанию «Link CSS Class» в редакторе дополнительных медиа-админов Вопрос о "wp_deregister_script ()"

paginate_links () добавляет пустой href к первой странице и предыдущей ссылке

Это действительно странно. При попытке решить эту проблему у меня получилось почти идеальное использование paginate_links () вместо пользовательской функции разбиения на страницы:

$myquery = new WP_Query($args); $paged = get_query_var('page'); ($paged == 0 ? $paged = 1 : $paged = $paged); $pagination = paginate_links(array( 'total' => $myquery->max_num_pages, 'current' => $paged, 'show_all' => true, 'type' => 'list', )); 

Казалось, это работает нормально. Пока я не узнал, что независимо от того, что я делаю, всякий раз, когда я нахожусь после страницы 1, функция печатает пустой href="" в моих первых ссылках.

Поэтому я получаю эти надбавки:

 <!-- base page - example.com/parent-page/child-page/ --> <!-- same for page 1 - example.com/parent-page/child-page/?page=1 --> <ul class="page-numbers"> <li><span class="page-numbers current">1</span></li> <li><a class="page-numbers" href="?page=2">2</li> <li><a class="page-numbers" href="?page=3">3</li> <li><a class="page-numbers" href="?page=4">4</li> <li><a class="next page-numbers" href="?page=2">Next</li> </ul> <!-- page 2 - example.com/parent-page/child-page/?page=2 --> <ul class="page-numbers"> <li><a class="prev page-numbers" href="">Previous</a></li> <!-- empty href="" --> <li><a class="page-numbers" href="">1</li><!-- empty href="" --> <li><span class="page-numbers current">2</span></li> <li><a class="page-numbers" href="?page=3">3</li> <li><a class="page-numbers" href="?page=4">4</li> <li><a class="next page-numbers" href="?page=2">Next</li> </ul> <!-- page 3 and onwards - example.com/parent-page/child-page/?page=3 --> <ul class="page-numbers"> <li><a class="prev page-numbers" href="?page=2">Previous</a></li> <!-- correct --> <li><a class="page-numbers" href="">1</li><!-- empty href="" --> <li><a class="page-numbers" href="?page=2">2</li> <li><span class="page-numbers current">3</span></li> <li><a class="page-numbers" href="?page=4">4</li> <li><a class="next page-numbers" href="?page=2"></li> </ul> 

Копаясь в paginate_links () на wp-includes / general-template.php (около строки 1954), я обнаружил, что по какой-то причине он явно передает аргументы пустой ссылки в ссылку Previous, если на странице 2:

 if ( $prev_next && $current && 1 < $current ) : $link = str_replace('%_%', 2 == $current ? '' : $format, $base); 

и к первой ссылке (строка 1968)

 if ( $show_all || ( $n <= $end_size || ( $current && $n >= $current - $mid_size && $n <= $current + $mid_size ) || $n > $total - $end_size ) ) : $link = str_replace('%_%', 1 == $n ? '' : $format, $base); 

любые мысли о том, почему это было бы, и если можно избежать этого, не создавая еще одну функцию разбивки на страницы?

Solutions Collecting From Web of "paginate_links () добавляет пустой href к первой странице и предыдущей ссылке"

Вы пытались указать аргументы base и format для paginate_links() ? Он принимает значения по умолчанию:

  'base' => '%_%', 'format' => '?page=%#%', 

Ваша base должна быть чем-то вроде /parent-page/child-page/%_% ; то первая ссылка на страницу будет равна /parent-page/child-page/ , а последующие ссылки будут соответствовать формату /parent-page/child-page/?page=3 (пример на стр. 3).

В base %_% заменяется аргументом format .
В format , %#% заменяется номером страницы.

http://codex.wordpress.org/Function_Reference/paginate_links

Для всех, кого это интересует, вот код, который работал для меня:

  echo paginate_links( array( 'current' => max(1, get_query_var('paged')), 'total' => $wp_query->max_num_pages, 'base' => get_pagenum_link(1) . '%_%', 'format' => 'page/%#%', ) ); 

Скрытно устарел, но у меня были проблемы с этим, и я получил следующее, чтобы работать –

 echo paginate_links(array( 'base' => remove_query_arg('page', get_pagenum_link(1)).'%_%', 'current' => max(1, get_query_var('page')), 'end_size' => 2, 'total' => $this->items->max_num_pages, ));