У меня есть тип сообщения «продукт» и «типы» иерархической таксономии, прикрепленные к нему. В этой таксономии у меня есть термины: «химчистка», «стирка» и т. д. С несколькими подтерминами для каждого термина.
В моей ситуации мне нужно отобразить, например:
- http://example.com/types/washer -> отображать на нем все подтермины
- http://example.com/types/washer/ {subterm} -> отображать все сообщения на нем
Мои вопросы:
- Как получить URL-адрес постоянной ссылки для родительских терминов? Я пробую URL выше, но это приводит к 404.
- Как файлы шаблонов работают для такого рода проблем?
- достаточно
taxonomy-types-washer.php
для случая №1? или я должен создаватьtaxonomy-types.php
и создавать логику там? - на мой взгляд, после сканирования иерархии шаблонов мне может понадобиться
taxonomy-types-{term_parent}.php
перечислить все подтермины иtaxonomy-types.php
перечислить все продукты в подтерминах. - в конечном счете, для отображения каждого продукта мне придется создать
single-product.php
- достаточно
- По немного не связанной с этим проблеме. Я считаю, что
archive-{posttype}.php
это не работает, когда у меня нет поста об этом. Есть ли какое-нибудь решение для этого? ( должен ли я создать другой вопрос или придерживаться этого )?
ОБНОВИТЬ
Я проверил свои rewrite_rules
параметры, и он вообще не перечисляет [типы]. Я не знаю почему. Чтобы проверить это, я меняю свой slug на product-types
, очищаю постоянную ссылку, и в нем отображается следующее:
[product-types/([^/]+)/feed/(feed|rdf|rss|rss2|atom)/?$] => index.php?types=$matches[1]&feed=$matches[2]
[product-types/([^/]+)/(feed|rdf|rss|rss2|atom)/?$] => index.php?types=$matches[1]&feed=$matches[2]
[product-types/([^/]+)/page/?([0-9]{1,})/?$] => index.php?types=$matches[1]&paged=$matches[2]
[product-types/([^/]+)/?$] => index.php?types=$matches[1]
Так что я думаю, что он зарегистрирован сейчас. Я пытаюсь загрузить URL-адрес product-types/washer
, он переходит на 404. Я пытаюсь загрузить URL-адрес index.php?types=washer
. Это тоже идет 404. Прямо сейчас у меня есть эти файлы:
- типы таксономии-washer.php
- таксономия-types.php
Так что я не знаю, что не так с этим :(.
ОБНОВЛЕНИЕ №2
Я нахожу проблему. Это потому что я пропустил'rewrite'=>array('hierarchical'=>true)
Вот новое rewrite_rules
:
[product-types/(.+?)/feed/(feed|rdf|rss|rss2|atom)/?$] => index.php?types=$matches[1]&feed=$matches[2]
[product-types/(.+?)/(feed|rdf|rss|rss2|atom)/?$] => index.php?types=$matches[1]&feed=$matches[2]
[product-types/(.+?)/page/?([0-9]{1,})/?$] => index.php?types=$matches[1]&paged=$matches[2]
[product-types/(.+?)/?$] => index.php?types=$matches[1]
Я знаю, что это можно сделать на wordpress.stackexchange.com/questions/5308/… но для «неиерархических» таксономий.
Вы должны создать новый вопрос для пункта 3.
@scribu, я создам этот вопрос сегодня вечером, когда вернусь домой.
Эти типы URL-адресов поддерживаются начиная с WP 3.1:
Не забудьте сбросить правила перезаписи после внесения изменений.
Шаблон, который вы будете использовать как для родительских, так и для дочерних терминов, — это taxonomy-types.php: