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

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

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

  1. http://example.com/types/washer -> отобразить на нем все суб-термины
  2. http://example.com/types/washer/ {subterm} -> Показать все сообщения на нем

Мои вопросы:

  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 не работает, когда у меня нет на нем сообщений. Есть ли решение для этого? ( должен ли я создать другой вопрос или придерживаться этого )?

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]
7 голосов | спросил ariefbayu 11 AMpMon, 11 Apr 2011 02:57:22 +040057Monday 2011, 02:57:22

1 ответ


6

Эти типы 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.
}
ответил scribu 11 AMpMon, 11 Apr 2011 07:09:10 +040009Monday 2011, 07:09:10

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132