Pagina elenco tassonomia personalizzata?


11

Sto lavorando su un sito di ristoranti e ho un tipo di post personalizzato per i piatti, in questo modo:

$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 esempio di una delle tassonomie personalizzate che voglio usare è questo:

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

Le tassonomie personalizzate stanno funzionando bene nell'amministratore e posso andare a myurl.com/main-ingredient/porkvedere un elenco di tutti i piatti con maiale.

Quello che voglio fare è essere in grado di colpire myurl.com/main-ingrediente ottenere un elenco di tutti i vari valori degli ingredienti principali.

Ho trovato questo riferimento, che è esattamente quello che sto cercando di fare.

Ma la soluzione non funziona per me - sto ancora ricevendo un 404 quando lo farò myurl.com/main-ingredient

Qualche suggerimento su come farlo al meglio?

Risposte:


20

Non c'è nulla di incorporato in WordPress per fornire una pagina "indice" per la tua tassonomia come la tua domanda implica che ci dovrebbe essere (e sono d'accordo, ci dovrebbe essere! Ma non lo è.)

Invece devi hackerarlo e un modo per farlo è quello di creare una pagina chiamata "Ingrediente principale" con una main-ingredientlumaca URL e assegnargli un modello di pagina per il tuo tema che creerai (forse) chiamato "Elenco degli ingredienti principali" :

Schermata che mostra dove impostare il modello di pagina in WordPress
(fonte: mikeschinkel.com )

Ecco un punto di partenza; forse usa il nome del file page-main-ingredient-list.php per il tuo modello di pagina:

<?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();

E poi ecco come appare la pagina con alcuni dati fittizi sul mio sito di test:

Schermata di una pagina di indice di tassonomia per un sito WordPress


Ciao Mike, sì, l'ho fatto. Non aiuta

@Josh - Ho aggiunto il codice che trovi qui al functions.phpfile del mio tema e poi sono andato http://wp30.dev/main-ingredient/chicken/ ( wp30.devè il mio sito di test locale) e ho ottenuto questo screenshot . Quindi se non funziona hai qualche plugin o qualche altro codice che lo sta facendo funzionare.
MikeSchinkel,

Grazie per la risposta Mike. Questo funziona per me, ma non è il problema che sto cercando di risolvere. Sto cercando di ottenere un elenco degli ingredienti principali andando al livello più alto della tassonomia. In altre parole, se elimini "pollo" dal tuo URL, dovresti ottenere una pagina 404. Questo è il problema che sto incontrando.

@Josh - Okay, lo vedo adesso. Mi dispiace, ho risposto a troppe domande oggi. Cordiali saluti, non c'è niente di "incorporato" in WordPress per gestire ciò che stai chiedendo. Avrebbe molto senso che ci fosse automaticamente, ma attualmente non lo è. Scriverò un aggiornamento che è una soluzione alternativa.
MikeSchinkel,

3
@Josh - "ma odio perdere la grande funzionalità integrata della visualizzazione dei post e della navigazione tramite il termine tassonomia": mi manca qualcosa perché non vedo come perdi qualcosa con questo?
MikeSchinkel,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.