Página de lista de taxonomía personalizada?


11

Estoy trabajando en un sitio de restaurante, y tengo un tipo de publicación personalizada para platos, así:

$args = array(
    'labels'=> $labels,
    'public'=> true,
    'publicly_queryable'=>true,
    'show_ui'=>true,
    'show_in_nav_menus'=>true,
    'query_var'=>'dish',
    'rewrite'=>true,
    'capability_type'=>'post',
    'hierarchicial'=>false,
    'menu_position'=>5,
    'supports'=>array(
        'title',
        'editor',
        'thumbnail',
        'excerpt',
        'custom-fields',
        'revisions'
    )   
);  

register_post_type('dish', $args);

Un ejemplo de una de las taxonomías personalizadas que quiero usar es esta:

register_taxonomy('Main Ingredient', array('dish'), array(
    'hierarchical' => true,
    'label' => 'Main Ingredient',
    'singular_label' => 'Main Ingredient',
    'query_var'=>true,
    'rewrite' => true)
);

Las taxonomías personalizadas funcionan bien en el administrador, y puedo ir myurl.com/main-ingredient/porky ver una lista de todos los platos con carne de cerdo.

Lo que quiero hacer es poder acertar myurl.com/main-ingredienty obtener una lista de todos los diversos valores de ingredientes principales.

Encontré esta referencia, que es exactamente lo que estoy tratando de hacer.

Pero la solución no me funciona: sigo obteniendo un 404 cuando voy a myurl.com/main-ingredient

¿Alguna sugerencia sobre la mejor manera de hacer esto?

Respuestas:


20

No hay nada incorporado en WordPress para proporcionar una página de "índice" para su taxonomía, ya que su pregunta implica que debería haberla (¡y estoy de acuerdo, debería haberla! Pero no la hay).

En su lugar, debe hackearlo y una forma de hacerlo es crear una página llamada "Ingrediente principal" con una main-ingredientficha URL y asignarle una plantilla de página para su tema que creará (tal vez) llamada "Lista de ingredientes principales" :

Captura de pantalla que muestra dónde configurar la plantilla de página en WordPress
(fuente: mikeschinkel.com )

Aquí hay un punto de partida; tal vez use el nombre del archivo page-main-ingredient-list.php para su plantilla de página:

<?php
/*
Template Name: Main Ingredient List
*/
get_header();
$main_ingredients = get_terms('main-ingredient');
foreach($main_ingredients as $main_ingredient) {
  $dishes = new WP_Query(array(
    'post_type' => 'dish',
    'post_per_page'=>-1,
    'taxonomy'=>'main-ingredient',
    'term' => $main_ingredient->slug,
  ));
  $link = get_term_link(intval($main_ingredient->term_id),'main-ingredient');
  echo "<h2><a href=\"{$link}\">{$main_ingredient->name}</a></h2>";
  echo '<ul>';
  while ( $dishes->have_posts() ) {
    $dishes->the_post();
    $link = get_permalink($post->ID);
    $title = get_the_title();
    echo "<li><a href=\"{$link}\">{$title}</a></li>";
  }
  echo '</ul>';
}
get_footer();

Y luego, así es como se ve la página con algunos datos ficticios en mi sitio de prueba:

Captura de pantalla de una página de índice de taxonomía para un sitio de WordPress


Hola Mike, sí, hice eso. No ayuda

@Josh: agregué el código que encuentras aquí al functions.phparchivo de mi tema y luego fui a http://wp30.dev/main-ingredient/chicken/ ( wp30.deves mi sitio de prueba local) y obtuve esta captura de pantalla . Entonces, si no funciona, tiene algún complemento u otro código que está causando que no funcione.
MikeSchinkel

Gracias por la respuesta Mike. Eso funciona para mí, pero no es el problema que estoy tratando de resolver. Estoy tratando de obtener una lista de los ingredientes principales yendo al nivel superior de la taxonomía. En otras palabras, si elimina "pollo" de su URL, debería obtener una página 404. Ese es el problema con el que me encuentro.

@ Josh - Bien, ya veo eso ahora. Lo siento, he respondido demasiadas preguntas hoy. Para su información, no hay nada "incorporado" en WordPress para manejar lo que está pidiendo. Tendría mucho sentido que estuviera allí automáticamente, pero actualmente no lo está. Escribiré una actualización que es una solución alternativa.
MikeSchinkel

3
@Josh - "pero odio perder la gran funcionalidad incorporada de la visualización y navegación de publicaciones a través del término de taxonomía": ¿ Me falta algo porque no veo cómo pierdes algo con esto?
MikeSchinkel
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.