Функция paginate_links WP

Мне сложно понять, как работает paginate_links . Я прочитал документацию и использовал ее сто раз раньше, но я до сих пор не понимаю ее полностью. Особенно «базовый» атрибут. Точнее, у меня было это:

 'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ), 

Который добавлял / page / 2 к URL. Затем я изменил это на следующее:

 'base' => @add_query_arg('paged','%#%'), 

И теперь он добавляет параметр GET следующим образом: & paged = 5

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

Solutions Collecting From Web of "Функция paginate_links WP"

Таким образом, назначение функции не так сложно: создать набор URL-адресов total размера с current страницей и некоторыми хорошими деталями.

Проблема в том, что путь URL настроен довольно … оригинал, а документация не совсем описывает то, что происходит точно.

Документация подразумевает, что это аргументы base и format умолчанию:

 echo '<pre>', esc_html( paginate_links( [ 'base' => '%_%', 'format' => '?page=%#%', 'current' => 1, 'total' => 3, 'type' => 'plain', ] ) ), '</pre>'; <span class='page-numbers current'>1</span> <a class='page-numbers' href='?page=2'>2</a> <a class='page-numbers' href='?page=3'>3</a> <a class="next page-numbers" href="?page=2">Next »</a> 

На самом деле это не так. base и format умолчанию генерируются динамически, в зависимости от конфигурации сайта. Для моего сайта dev они будут такими:

 echo '<pre>', esc_html( paginate_links( [ 'base' => 'http://dev.rarst.net/%_%', 'format' => 'page/%#%/', 'current' => 1, 'total' => 3, 'type' => 'plain', ] ) ), '</pre>'; <span class='page-numbers current'>1</span> <a class='page-numbers' href='http://dev.rarst.net/page/2/'>2</a> <a class='page-numbers' href='http://dev.rarst.net/page/3/'>3</a> <a class="next page-numbers" href="http://dev.rarst.net/page/2/">Next »</a> 

Так что там происходит? Две вещи:

  1. %#% в format заменяется на текущий номер страницы.
  2. Затем %_% в base заменяется результатом формата.

Итак, для страницы 2 :

  1. 2 + page/%#%/ = page/2/
  2. page/2/ + http://dev.rarst.net/%_% = http://dev.rarst.net/page/2/

Остальные аргументы имеют дело с «хорошенькими» вещами, такими как разбиение на сегменты и т. Д. (Так что вы фактически не показываете 1000 ссылок на 1000 страниц).

Поэтому я думаю, что сводка такова: функция очень гибкая и позволяет создавать совершенно разные схемы разбивки на страницы. Но вам действительно нужно иметь конкретную цель, чтобы правильно строить base и format .

Есть некоторые более высокоуровневые обертки, которые были добавлены позже и более специфичны для задач, например the_posts_pagination() .