Передача пользовательских аргументов в paginate_links
Например, у меня есть URL domain.com/about?project=1
, но у меня включены ЧПУ и я использую paginate_links для генерации пагинации. Проблема в том, что генерируются ссылки вида domain.com/about?project=1/page/1
, что ломает функционал, так как project воспринимается как 1/page/1
.
Есть ли способ получить domain.com/about/project/1/page/1
в ссылках пагинации? Я передаю этот параметр через форму методом GET для отображения проекта.

Чтобы добавить аргументы к ссылкам в пагинации записей, используйте аргумент 'add_args'
в функции. Вам нужно передать аргументы в виде ассоциативного массива. Например, чтобы добавить project=1
в конец всех ссылок, сделайте следующее:
global $wp_query;
paginate_links(array(
'total' => $wp_query->max_num_pages,
'current' => (get_query_var('paged') ? get_query_var('paged') : 1),
'base' => 'http://domain.com/about/%_%',
'format' => 'page/%#%',
'add_args' => array( 'project' => 1 /* или любой другой номер проекта */ ),
));
Надеюсь, это помогло!
РЕДАКТИРОВАНИЕ
Чтобы получить URL вида domain.com/about/projects/1/page/1
, вы можете добавить пользовательскую структуру постоянных ссылок. Предположим, что about
— это страница.
function wpse21802_init(){
add_rewrite_rule( '([^/]+)/projects/([^/])/?$', 'index.php?pagename=$matches[1]&project=$matches[2]', 'top' );
add_rewrite_rule( '([^/]+)/projects/([^/])/page/(/d+)/?$', 'index.php?pagename=$matches[1]&project=$matches[2]&paged=$matches[3]', 'top' );
}
add_action( 'init', 'wpse21802_init' );
После добавления этого кода сбросьте правила перезаписи, перейдя в Настройки → Постоянные ссылки.

Но это генерирует http://domain.com/about/page/1?project=1

"Я отправляю это из формы, используя get для отображения проекта." Project - это $_GET
переменная в этой ссылке, верно? 'add_args' => array( 'project' => absint($_GET['project'])

Да, но снова прочитайте основной вопрос: Есть ли способ получить domain.com/about/project/1/page/1 в ссылках пагинации? Я отправляю это из формы, используя get для отображения проекта.

Я обновил свой ответ, но также хочу отметить, что WordPress уже поддерживает такую структуру URL просто за счёт использования иерархии страниц.
