ariefbayu
  • 0
Эксперт

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

  • 0

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

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

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

ОБНОВИТЬ

Я проверил свои 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]
Share
  1. Я знаю, что это можно сделать на wordpress.stackexchange.com/questions/5308/… но для «неиерархических» таксономий.

    • 0
  2. Эти типы 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.
    }
    
    • 0

Оставить ответ

You must login to add an answer.