Таксономия, Термины и файлы шаблонов
У меня есть тип записи "продукт" и иерархическая таксономия "типы", прикрепленные к нему. В этой таксономии у меня есть термины: "химчистка", "стиральная машина" и т. Д. С несколькими дополнительными условиями на каждом из условий.
В моей ситуации мне нужно отобразить, например:
- http://example.com/types/washer -> отобразить все вложенные термины на нем
- http://example.com/types/washer /{промежуточный} ->отобразить все сообщения на нем
Мои вопросы является:
- Как мне получить 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. Прямо сейчас у меня есть эти файлы:
- taxonomy-types-washer.php
- taxonomy-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]
1 answers
Эти типы URL-адресов поддерживаются начиная с WP 3.1:
register_taxonomy( 'types', 'post', array(
'hierarchical' => true,
'rewrite' => array( 'hierarchical' => true ),
...
);
Не забудьте удалить правила перезаписи после внесения изменений.
Шаблон, который вы бы использовали как для родительских, так и для дочерних терминов, является taxonomy-types.php :
$current_term = get_queried_object();
if ( 0 == $current_term->parent ) {
// it's a parent term; display it's child terms using wp_list_categories() etc.
} else {
// it's a child term; display the posts using The Loop etc.
}