Таксономия, Термины и файлы шаблонов


У меня есть тип записи "продукт" и иерархическая таксономия "типы", прикрепленные к нему. В этой таксономии у меня есть термины: "химчистка", "стиральная машина" и т. Д. С несколькими дополнительными условиями на каждом из условий.

В моей ситуации мне нужно отобразить, например:

  1. http://example.com/types/washer -> отобразить все вложенные термины на нем
  2. http://example.com/types/washer /{промежуточный} ->отобразить все сообщения на нем

Мои вопросы является:

  1. Как мне получить URL-адрес постоянной ссылки для родительских терминов? Я пробую URL выше, но это приводит к 404.
  2. Как файлы шаблонов работают для такого рода проблем?
    1. достаточно ли taxonomy-types-washer.php для случая № 1? или я должен создать taxonomy-types.php и создать там логику?
    2. на мой взгляд, после сканирования иерархии шаблонов мне может потребоваться taxonomy-types-{term_parent}.php перечислить все дополнительные термины и taxonomy-types.php перечислить весь продукт в дополнительных терминах.
    3. в конечном счете, чтобы отобразить каждый продукт, мне придется создать single-product.php
  3. По несколько несвязанной проблеме. Я нахожу, что 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]
Author: ariefbayu, 2011-04-10

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.
}
 6
Author: scribu, 2011-04-11 03:20:16