custom-post-types – Archivos de plantilla, términos y taxonomía

Pregunta:

Tengo adjuntos el tipo de publicación 'producto' y los 'tipos' de taxonomía jerárquica. En esta taxonomía, tengo términos: 'limpieza en seco', 'lavadora', etc. Con varios términos secundarios en cada término.

En mi situación, necesito mostrar, por ejemplo:

  1. http://example.com/types/washer -> muestra todos los términos secundarios en él
  2. http://example.com/types/washer/ {subterm} -> mostrar todas las publicaciones en él

Mi pregunta es:

  1. ¿Cómo obtengo la URL del enlace permanente para los términos principales? Probé la URL anterior, pero resultó en 404.
  2. ¿Cómo funcionan los archivos de plantilla para ese tipo de problema?
    1. ¿Es suficiente taxonomy-types-washer.php para el caso # 1? ¿O debería crear taxonomy-types.php y crear la lógica allí?
    2. en mi mente, después de escanear la jerarquía de plantillas , podría necesitar taxonomy-types-{term_parent}.php para enumerar todos los sub términos y taxonomy-types.php para enumerar todos los productos en sub términos.
    3. en última instancia, para mostrar cada producto, tendré que crear single-product.php
  3. En un problema ligeramente no relacionado. Encuentro que archive-{posttype}.php no funciona cuando no tengo ninguna publicación en él. ¿Hay alguna solución para esto? (¿ Debería crear una pregunta diferente o seguir con esta )?

ACTUALIZAR

rewrite_rules mis opciones de rewrite_rules y no enumera [tipos] en absoluto. No sé por qué. Para probarlo, cambio mi slug a product-types , descargo el enlace permanente y enumero esto:

[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]

Así que supongo que ahora está registrado. Intento cargar la URL product-types/washer , va a 404. Intento cargar la URL index.php?types=washer . También va 404. En este momento, tengo estos archivos:

  • taxonomia-tipos-lavadora.php
  • taxonomy-types.php

Entonces, no sé qué le pasa a este :(.

ACTUALIZACIÓN # 2

Encuentro el problema. Es porque me perdí 'rewrite'=>array('hierarchical'=>true)

Aquí están las nuevas 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]

Respuesta:

Estos tipos de URL son compatibles desde WP 3.1:

register_taxonomy( 'types', 'post', array(
  'hierarchical' => true,
  'rewrite' => array( 'hierarchical' => true ),
  ...
);

Recuerde eliminar las reglas de reescritura después de realizar el cambio.

La plantilla que usaría tanto para términos primarios como secundarios es 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.
}

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top

web tasarım