Intereting Posts
Как я могу загружать сообщения, начиная с текущего сообщения и включая его? Изменение имени блога WordPress и веб-адреса Как разрешить привязку косых черт на некоторых URL-адресах без перенаправления, но не на других? Понимание и использование did_action () в условном выражении Как программно добавлять элементы контента к настраиваемому типу сообщений? Перемещение небольших обновлений между локальными и живыми сайтами – просто база данных? Как показать разные категории на разных страницах? Два пользовательских типа сообщений с идентичными статьями, конкурирующими за один и тот же слизень wp_redirect не работает как вставить HTML-форму в всплывающее окно javascript? Создание плагина, который будет добавлять параметры. Где должны отображаться страницы меню опций? Добавить класс в панель администратора WordPress? Форма комментариев WP (пользовательская) отображает дополнительное поле комментариев Пользовательский тип сообщения – повторяющиеся пробки страницы Как получить изображения галереи?

Структура Permalink / page / page / cpt-post дает 404 с разбивкой на страницы

Я пытаюсь достичь этой постоянной ссылки:

  • Страница «about-us»
    • Страница "Истории"
      • Сообщение (история CPT) «пост-название»

Страница «Истории» – это настраиваемый шаблон страницы, который показывает архив для персонализированного типа сообщений «история», он должен быть шаблоном страницы, поэтому я могу редактировать содержимое и также иметь разбиение на страницы для сообщений.

Поэтому domain.com/about-us/stories/ должен показывать «историю» CPT-архив с разбивкой по страницам, а domain.com/about-us/stories/story-title/ должен показывать один рассказ.

Кажется, я либо печатаю страницы страницы архива, либо постоянную ссылку на работу, но не обе.

Если я установил переписку CPT как

'rewrite' => array( 'slug' => __('about-us/stories', 'text-domain'), 'with_front' => false, 'pages' => true, 'feeds' => false, ) 

Постоянная ссылка post работает так, как ожидалось, и я могу перейти по ссылке domain.com/about-us/stories/story-title/, и все в порядке, но разбиение на страницы на domain.com/about-us/stories/ выиграло ' t и дает ошибку 404 при смене страницы. Если я установил переписку CPT как

 'rewrite' => array( 'slug' => __('stories', 'text-domain'), 'with_front' => false, 'pages' => true, 'feeds' => false, ) 

постраничная страница на странице архива, но постоянная ссылка на пост теперь является domain.com/stories/story-title, а не domain.com/ about-us / stories / story-title /

Я также пытался играть с add_rewrite_tag и add_rewrite_rule но, похоже, не add_rewrite_rule этой проблемой. Является ли эта структура permalink возможной или должна быть, мне просто нужно согласиться на разную структуру URL для одиночных сообщений?

Solutions Collecting From Web of "Структура Permalink / page / page / cpt-post дает 404 с разбивкой на страницы"

Удалось заставить это работать с небольшой помощью от Debug. Этот плагин и некоторые небольшие намеки на подобные вопросы. По крайней мере, до сих пор, после некоторого быстрого тестирования, я не сталкивался с какими-либо негативными побочными эффектами.

Проблема, если я правильно поняла, заключается в том, что если у меня будет переписываться cpt-переписывание на ту же самую пулю, что и моя страница архива /about-us/stories , WP перезаписывает запросы разбивки на страницы /about-us/stories/page/n/ на CPT с именем «страница», которая в этом случае возвращает 404.

Чтобы исправить это, мне нужно было создать настраиваемое правило перезаписи, чтобы проверить, запрашиваем ли мы номер страницы и переписываем ее соответственно:

 function wpse288130_rewrite_rules() { add_rewrite_rule('^(.?.+?)/page/(\d)$', 'index.php?pagename=$matches[1]&paged=$matches[2]', 'top'); } add_action('init', 'wpse288130_rewrite_rules'); 

Где первая группа захвата регулярных выражений (.?.+?) Ловит имя страницы about-us/stories а вторая группа (\d) ловит любую цифру после /page/

Во втором параметре add_rewrite_rule мы говорим WP, чтобы переписать это как index.php?pagename=about-us/stories&paged=[page number]

Третий параметр «top» сообщает WP о приоритизации этого переписывания выше перезаписи по умолчанию.