seinoxygen
  • 0
Новичок

Передача пользовательских аргументов в paginate_links

  • 0

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

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

Share
  1. Чтобы добавить аргументы к ссылкам в сообщениях с разбивкой на страницы, используйте '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 /* or whatever the project number is*/ ),
    ));
    

    Надеюсь, это помогло!

    РЕДАКТИРОВАТЬ

    Чтобы получить 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' );
    

    После добавления этого кода сбросьте правила перезаписи, перейдя в «Настройки» -> «Постоянные ссылки».

    • 0

Оставить ответ

You must login to add an answer.