Как устранить ошибку 404 при открытии поста (custom_post_type), связанного с родительским постом (custom_post_type)?

Ссылка скопирована
1 ответ

Делаю тестовое задание.
Столкнулся с такой ошибкой после привязки поста кастомного типа (объекты недвижимсоти) к родительскому посту кастомного типа (города) перестал открываться привязанный наследуемый пост - ошибка 404. Как всегда первым делом обновил "Настройки постоянных ссылок" -> "Сохранить изменить", но это не помогает.

Ситуация такая: существует два типа постов. 1. Объекты недвижимости slug => realty. 2. Города .slug => city Каждый объект недвижимости привязан к своему городу. Привязка работает все нормально, но...

Если привязанный пост отвязать он открывается по такому URL:

https://example.ru/realty/derevyannyj-dom-iz-brusa/

https://example.ru/realty/derevyannyj-dom-iz-brusa/

- все работает. realty - ярлык кастомного типа постов.
Если привязать пост к родителю в url поста появляется ярлык поста родителя, (например город Омск) /omsk/:

https://example.ru/realty/omsk/derevyannyj-dom-iz-brusa/

https://example.ru/realty/omsk/derevyannyj-dom-iz-brusa/

- пост перестает открываться, ошибка 404.

В чем может быть проблема? Прошу подсказать. Не могу найти информацию ни русском сегменте интернета ни в английском.

Дополнительно:

Видать не той верёвочкой привязываешь.

  • В том то и дело что той. Может не теми узелками. :)
  • Ответы:

    Решил вопрос следующим образом.
    При регистрации кастомного типа поста, который будет играть роль потомка, нужно указать 'hierarchical' => false в функции register_post_type(). А у родителя наоборот должно быть: 'hierarchical' => true.
    Когда true и там и там - не работает.
    Такие дела, может кому-то пригодиться.

    Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    1
    WordPress-редакция Ответ

    Ошибка 404 у custom post type после привязки к родительскому посту почти всегда связана не с самой связью, а с rewrite rules и ожиданиями по URL. Связать один CPT с другим через meta/ACF — это одно. Сделать вложенный URL вида “город/объект” — совсем другое.

    Сначала проверьте базовые вещи:

    • после регистрации CPT пересохраните “Настройки → Постоянные ссылки”;
    • убедитесь, что у CPT включены public, publicly_queryable и корректный rewrite;
    • проверьте, не совпадает ли slug CPT со страницей, рубрикой или другим rewrite;
    • убедитесь, что запись опубликована, а не черновик;
    • проверьте URL без родительского сегмента.

    Пример нормальной регистрации:

    register_post_type('realty', [
        'public' => true,
        'has_archive' => true,
        'rewrite' => [
            'slug' => 'realty',
            'with_front' => false,
        ],
        'supports' => ['title', 'editor', 'thumbnail'],
    ]);

    register_post_type('realty', [ 'public' => true, 'has_archive' => true, 'rewrite' => [ 'slug' => 'realty', 'with_front' => false, ], 'supports' => ['title', 'editor', 'thumbnail'], ]);

    Если вы просто добавили связь “объект относится к городу”, WordPress не обязан автоматически открывать объект по URL внутри города. Для этого нужны свои rewrite rules и фильтр permalink. Например, URL /city/moscow/object/kvartira/ нужно отдельно описывать правилами.

    Если вложенность не критична, оставьте простую структуру:

    /cities/moscow/
    /realty/kvartira-na-tverskoy/

    /cities/moscow/ /realty/kvartira-na-tverskoy/

    А на странице города выводите связанные объекты через WP_Query по meta field. Это проще, стабильнее и реже ломает SEO.

    Итог: связь между CPT не создаёт вложенный permalink автоматически. Если после привязки появился 404, проверьте rewrite, конфликт slug и flush permalinks. Если нужен вложенный URL, придётся отдельно делать rewrite rules и генерацию ссылок.

    Другие ответы (0)

    Пока нет других ответов. Будьте первым, кто поможет автору.

    Ответить на вопрос

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно