Intereting Posts
Пользовательский тип сообщения игнорирует начальную категорию Использование ajax с поисковым вызовом и пользовательский подзапрос Использовать функции wordpress в другом файле PHP Как отображать категории в пользовательских типах сообщений и связывать их Фильтрация настраиваемого типа сообщений с использованием нескольких выпадающих списков таксономии Запросить не показывать meta_value 100? как указать каталог для файла при его загрузке Я пытаюсь получить все приложения для медиа-запросов через ajax в wordpress Что это за недокументированные аргументы для register_taxonomy? Пользовательский JS API динамически добавляет разделы и элементы управления Название места (в правильном месте) над изображением с непрозрачным фоном Отображать пользовательские сообщения с использованием идентификатора Удалить публикацию Publish для пользовательского типа сообщения Использовать js-скрипт из одного плагина в другом плагине Как получить bbpress липкие темы

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, ));