Таксономия, термины и файлы шаблонов
У меня есть тип типа «продукт» и иерархическая таксономия «типы», прикрепленные к нему. В этой таксономии у меня есть термины: «сухая чистка», «шайба» и т. Д. С несколькими терминами на каждом терминале.
В моей ситуации мне нужно отобразить, например:
- 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
не работает, когда у меня нет на нем сообщений. Есть ли решение для этого? ( должен ли я создать другой вопрос или придерживаться этого )?
UPDATE
Я проверил параметры 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]
1 ответ
Эти типы URL-адресов поддерживаются с WP 3.1:
register_taxonomy( 'types', 'post', array(
'hierarchical' => true,
'rewrite' => array( 'hierarchical' => true ),
...
);
Не забудьте сбросить правила перезаписи после внесения изменений.
Шаблон, который вы используете для родительского и дочернего терминов, - таксономия-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.
}