Страницы пользовательского типа записей "не найдены"
Я создал два новых пользовательских типа записей, используя код, который успешно работал в других проектах без проблем. Первый называется top_charts
, второй case_studies
, и оба корректно отображаются в меню администратора, и я могу создавать новые записи.
К сожалению, новые записи не отображаются. Я просто получаю ответ 404.php
.
Я создал archive-top_charts.php
, чтобы проверить, смогу ли я что-то отобразить, но я вижу ответ 404.php
"страница не найдена".
Изначально я назвал пользовательские записи top-charts
и case-studies
, но подумал, что дефис мог быть проблемой, поэтому переименовал их, используя нижнее подчеркивание. Это не помогло.
Я попробовал пересохранить постоянные ссылки, но ничего не изменилось. Мой файл .htaccess выглядит так, как и должен (и другие страницы работают нормально). Что еще можно проверить?

Вам не нужно редактировать PHP-код!
Хотя это можно сделать в функции, которая регистрирует ваш пользовательский тип записи, как в других ответах, вы также можете выполнить это в меню настроек, избегая изменений в PHP-коде:
Чтобы сбросить правила перезаписи или постоянные ссылки WordPress (обычно это нужно делать вручную для новых пользовательских типов записей) из админ-панели:
- В главном меню найдите "Настройки > Постоянные ссылки".
- Прокрутите вниз при необходимости и нажмите "Сохранить изменения".
- Правила перезаписи и постоянные ссылки будут сброшены.
Это так просто!

Я думаю, мне также понадобился параметр has_archive
, но хорошо знать, что можно принудительно обновить через меню.

Есть ли способ автоматически сохранять изменения (обновлять) постоянные ссылки, вместо того чтобы каждый раз заходить в Настройки > Постоянные ссылки при добавлении категории/термина для произвольного типа записи? Как это смогут сделать не-администраторы, если у них нет доступа к настройкам? Можно ли вызвать хук при добавлении новой категории, чтобы автоматически обновить постоянные ссылки?

Для исправления проблемы с ненахождением пользовательских записей используйте следующий код в вашем файле functions.php
:
flush_rewrite_rules( false );
Это следует делать только как временную меру, иначе код будет выполняться при каждой загрузке страницы.
Для получения дополнительной информации перейдите по этой ссылке
Что касается проблемы с отсутствием файла archive-top_charts.php
, убедитесь, что при регистрации типа записи у вас указано 'has_archive' => true
.

Я понимаю, что это уже поздний этап (и может быть не связано с проблемой), но хотел указать другим на возможную проблему.
В моем случае я установил перезапись таксономии как tools, а перезапись типа контента — аналогично. В результате это никогда не работало правильно из-за конфликта. К сожалению, нет механизма обнаружения таких ситуаций, поэтому я решил просто предупредить других об этом.

В моём случае не хватало прав в папке разработки, поэтому файл .htaccess не мог быть создан или изменён.
Поэтому ручной сброс или сохранение изменений в настройках постоянных ссылок WordPress не помогали.
Решение заключалось в том, чтобы создать файл .htaccess вручную.
