Intereting Posts
Почему activ_plugin не работает в register_activation_hook Как показать описание под вставленным изображением? Отобразить старую ревизию сообщения в теме WP front-end, существуют ли функции для этого? Пользовательские таксономические возможности Как скрывать сообщения во всех циклах в зависимости от значения настраиваемого поля? Как добавить пользовательский CSS в Media Thickbox? Показывать только последние липкие сообщения, отображать другие сообщения в хронологическом порядке выключение многопользовательского режима приводит к сбою XMLRPC: вам запрещено публиковать сообщения на этом сайте " Как добавить новую ссылку после редактирования | Быстрое редактирование | Корзина | Просмотр в разделе быстрого редактирования Заголовок эхо-страницы со страницы с помощью пользовательского набора метаданных Отправлять электронную почту при обновлении портфолио Исключить первое сообщение (липкое или нет) из цикла с помощью query_posts () Как подготовить действие кнопки «назад» для работы с бесконечным прокруткой? Восстановить URL-адрес изображения пользовательских полей в теме Когда незарегистрированный пользователь отправляет форму для настраиваемого типа сообщения, отправьте электронное письмо, которое позволяет им удалить их сообщение

paginate_links игнорируют мой формат

Мне нужна разбивка на страницы, чтобы иметь URL-адрес, например:

current_url?p-page=1 current_url?p-page=2 current_url?p-page=3 

И поэтому .. Причина, в которой я нуждаюсь, состоит в том, что у меня есть другие параметры на странице.

проблема в том, что в документах он специфицирует:

формат

(строка) (необязательно) Используется для структуры разбиения на страницы. Значение по умолчанию – «? Page =% #%». Если использовать довольно постоянные ссылки, это будет «/ page /% #%», где «% #%» заменяется номером страницы. По умолчанию: '? Page =% #%'

И у меня есть дружественный URL-адрес,

Как я могу предотвратить по умолчанию (BTW игнорирует мою p-page , все еще используя page )

 current_url/page/1 current_url/page/2 current_url/page/3 

это мой код, прямо сейчас:

 echo paginate_links( array( 'base' => str_replace( 999999999, '%#%', esc_url( get_pagenum_link( 999999999 ) ) ), 'total' => $query->max_num_pages, 'current' => max( 1, get_query_var( 'p-page' ) ), 'format' => '?p-page=%#%', 'show_all' => false, 'type' => 'plain', 'end_size' => 2, 'mid_size' => 1, 'prev_next' => true, 'prev_text' => sprintf( '<i></i> %1$s', '<i class="icon-chevron-left"></i>' ), 'next_text' => sprintf( '%1$s <i></i>', '<i class="icon-chevron-right"></i>' ), 'add_args' => false, 'add_fragment' => '', ) ); 

Как временное решение, я делаю это так:

 if ($current_page > 1) { echo '<a href="?p-page='.($current_page-1).'" class="page-numbers prev"><i class="icon-chevron-left"></i></a>'; } for ($i = 1; $i <= $query->max_num_pages; $i++) { echo '<a href="?p-page='.$i.'" class="page-numbers '.($current_page == $i ? 'current' : '').'">'.$i.'</a>'; } if ($current_page < $query->max_num_pages) { echo '<a href="?p-page='.($current_page+1).'" class="page-numbers prev"><i class="icon-chevron-right"></i></a>'; } 

Но было бы здорово воспользоваться функциональностью точек и т. Д. Любая идея?

Solutions Collecting From Web of "paginate_links игнорируют мой формат"

Эта часть:

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

генерирует часть page подобную этой:

 'base' => http://example.tld/page/%#%/ 

Если мы заглянем в paginate_links() мы увидим значение по умолчанию:

 'base' => $pagenum_link, // http://example.com/all_posts.php%_% : // %_% is replaced by format (below) 'format' => $format, // ?page=%#% : %#% is replaced by the page number 

где встроенный комментарий говорит, что %_% заменяется форматом.

В документации также говорится:

Примером аргумента 'base' является "http://example.com/all_posts.php%_%" и требуется '%_%' . '%_%' Будет заменен содержимым в аргументе 'format' . Примером аргумента 'format' является "?page=%#%" а также «% #%». '%#%' Будет заменен номером страницы.

Если мы используем это:

 'base' => '%_%' 

то он станет таким же, как аргумент format .

Вот модификация примера OP:

 echo paginate_links( [ 'base' => '%_%', 'total' => $query->max_num_pages, 'current' => $current, 'format' => '?p-page=%#%', 'show_all' => false, 'type' => 'plain', 'end_size' => 2, 'mid_size' => 1, 'prev_next' => true, 'prev_text' => '<i></i> <i class="icon-chevron-left"></i>', 'next_text' => '<i class="icon-chevron-right"></i> <i></i>', 'add_args' => false, 'add_fragment' => '', ] ); 

где мы используем:

 $current = max( 1, (int) filter_input( INPUT_GET, 'p-page' ) ); 

который также войдет в аргумент WP_Query $query :

 'paged' => $current, 

Пример вывода для ?p-page=6 :

 <a class="prev page-numbers" href="?p-page=5"><i></i> <i class="icon-chevron-left"></i></a> <a class='page-numbers' href=''>1</a> <a class='page-numbers' href='?p-page=2'>2</a> <span class="page-numbers dots">&hellip;</span> <a class='page-numbers' href='?p-page=5'>5</a> <span class='page-numbers current'>6</span> <a class='page-numbers' href='?p-page=7'>7</a> <span class="page-numbers dots">&hellip;</span> <a class='page-numbers' href='?p-page=99'>99</a> <a class='page-numbers' href='?p-page=100'>100</a> <a class="next page-numbers" href="?p-page=7"><i class="icon-chevron-right"></i> <i></i></a> 

ps: Не нужно, чтобы sprintf объединял две статические строки, как мы видим в OP для prev_text и next_text . В настоящее время эта часть выглядит неправильно в исходном фрагменте, поэтому я удалил его.


Надеюсь, поможет!