Вопрос или проблема
Я видел несколько вопросов, которые очень похожи, но не смог получить точный ответ, поэтому я собираюсь объяснить свою ситуацию здесь.
Совсем просто, мне нужна следующая структура URL:
site.com/dining (пользовательский тип записи)
site.com/dining/restaurants (термины пользовательской таксономии)
site.com/dining/specific-location (конкретная запись пользовательского типа записи)
Эта структура URL будет повторяться для нескольких пользовательских типов записи, таких как размещение (термины отелей, гостиниц, B&B, курортов и т.д.), бары и т.д. Моя текущая настройка:
Пользовательский тип записи: “Dining”
Пользовательская таксономия: “Dining Types”
Термины “Dining Types” – это категории, такие как кафе, рестораны и т.д.
Я переписал URL для термина, чтобы сделать его “dining” вместо “dining_types”, но это привело к конфликту с пользовательским типом записи, как я читал, что и должно произойти. Так что вопрос, с этой очень простой структурой, как мне добиться URL, указанных выше? Мне кажется, это невероятно простая структура (особенно по сравнению с другими похожими проблемами, которые я видел), но я не могу этого достичь.
Также стоит отметить, что я программно назначаю шаблоны всему, что связано с этой настройкой, поэтому мне не нужно никаких именованных файлов, все делается с помощью кода.
Здесь вы можете прочитать статью о том, как с этим справиться.
Вам нужно будет сделать несколько обязательных вещей, таких как переписать вашу таксономию с тем же именем, что и пользовательский тип записи.
http://someweblog.com/wordpress-custom-taxonomy-with-same-slug-as-custom-post-type/
Ответ или решение
Дублирование слогов для пользовательского типа записей и таксономии в WordPress
Понимание того, как правильно настроить пользовательские типы записей и таксономии в WordPress, является важной частью для достижения желаемой структуры URL на вашем сайте. В вашем случае у вас возникла проблема с конфликтами слогов между пользовательским типом записей "Dining" и таксономией "Dining Types". Давайте подробно разберем, как устранить эти конфликты и создать желаемую структуру URL.
Требуемая структура URL
site.com/dining
— Пользовательский тип записи (Custom Post Type).site.com/dining/restaurants
— Айти-термин таксономии (Term of Custom Taxonomy).site.com/dining/specific-location
— Конкретная запись пользовательского типа (Actual post of the Custom Post Type).
Программная настройка пользовательского типа записей и таксономий
Для достижения вашей цели, вам необходимо выполнить следующие шаги:
-
Регистрация пользовательского типа записи (CPT):
Вам нужно зарегистрировать пользовательский тип записи "Dining" с правильной настройкой параметров перезаписи (rewrite).function create_custom_post_type() { register_post_type('dining', array( 'labels' => array( 'name' => __('Dining'), 'singular_name' => __('Dining'), ), 'public' => true, 'rewrite' => array('slug' => 'dining'), 'has_archive' => true, 'supports' => array('title', 'editor', 'thumbnail'), ) ); } add_action('init', 'create_custom_post_type');
-
Регистрация таксономии:
После этого необходимо создать таксономию "Dining Types" с тем же слогом и убедиться, что она следует за пользовательским типом записи.function create_custom_taxonomy() { register_taxonomy('dining_types', 'dining', array( 'labels' => array( 'name' => __('Dining Types'), 'singular_name' => __('Dining Type'), ), 'rewrite' => array('slug' => 'dining', 'with_front' => false), 'hierarchical' => true, // В случае, если это иерархическая таксономия )); } add_action('init', 'create_custom_taxonomy');
-
Обновление постоянных ссылок:
Не забудьте обновить настройки постоянных ссылок в админке WordPress, перейдя вНастройки
>Постоянные ссылки
и просто нажавСохранить изменения
. Это поможет WordPress сгенерировать новые правила перезаписи для вашего пользовательского типа и таксономии.
Избежание конфликтов слогов с другими CPT
Если вы планируете добавить другие пользовательские типы записей, такие как "Lodging" или "Bars", вам следует следовать той же логике: создавайте каждый CPT и соответствующую таксономию с уникальными слогами, чтобы избежать конфликтов. Например:
-
Для «Lodging»:
- Слог CPT:
lodging
- Слог таксономии:
lodging-types
- Слог CPT:
-
Для «Bars»:
- Слог CPT:
bars
- Слог таксономии:
bar-types
- Слог CPT:
Это гарантирует, что структура URL каждого типа не будет пересекаться, и вы сможете сохранить необходимую структуру URL.
Заключение
Ваша цель по созданию структуры URL в виде site.com/dining
, site.com/dining/restaurants
и site.com/dining/specific-location
вполне достижима с помощью правильной настройки пользовательских типов и таксономий. Главное — следить за уникальностью слогов и корректно настраивать постоянные ссылки после изменений. Надеюсь, это руководство помогло вам понять, как достигнуть желаемой структуры URL.
Если у вас есть дополнительные вопросы или нужна помощь, не стесняйтесь обращаться за помощью!