Visualizzare le tassonomie dei custom post type come pagina archivio

4 ago 2017, 19:59:38
Visualizzazioni: 19.1K
Voti: 3

Ciao, ho un custom post type chiamato results. Ho anche creato delle categorie per questo specifico post type usando una tassonomia. Non sono sicuro di averlo configurato correttamente, ma il codice che ho funziona quindi per ora lo tengo così. Se vedi un modo migliore o degli errori fammelo sapere.

Riesco a creare un custom post e assegnargli una categoria. Il prossimo passo sarebbe creare una pagina categorie che funzioni come il normale archive.php ma solo per le categorie dei custom post type.

Quindi se ho un custom post per results con categoria impostata su incidenti stradali vorrei un modo per visualizzarli tutti come fa archive.php per i post normali.

Ho provato ad accedere a un URL come questo ma vengo reindirizzato a una pagina 404, nonostante abbia un archive-results.php

www.myurl.com/results/categories/incidenti-stradali

Ecco il codice che ho usato per impostare il custom post type e la tassonomia. Scusa se è lungo ma penso sia necessario includere tutto.

// Crea custom post type
function create_posttype() {
    register_post_type( 'Results',
        array(
            'labels' => array(
                'name' => __( 'Risultati' ),
                'singular_name' => __( 'Risultato' )
            ),
            'public' => true,
            'has_archive' => true,
            'rewrite' => array('slug' => 'results'),
            'taxonomies'  => array( 'results', 'result-category' ),
        )
    );
}
add_action( 'init', 'create_posttype' );

// Crea categoria per il post type specifico
function tr_create_my_taxonomy() {
    register_taxonomy(
        'results-categories',
        'results',
        array(
            'label' => __( 'Categorie Risultati' ),
            'rewrite' => array( 'slug' => 'result-category' ),
            'hierarchical' => true,
            'has_archive' => true
        )
    );
}
add_action( 'init', 'tr_create_my_taxonomy' );

Sto tralasciando qualcosa che impedisce a questo URL di funzionare?

www.myurl.com/results/categories/incidenti-stradali

Grazie in anticipo

2
Commenti

l'hai impostato su result-category dove hai registrato la tassonomia, cambialo in results/categories

Milo Milo
4 ago 2017 20:19:37

nella prima o nella seconda funzione?

cup_of cup_of
4 ago 2017 20:32:36
Tutte le risposte alla domanda 1
0

I tuoi URL desiderati:

www.example.com/risultati/nome-post/
www.example.com/risultati/categorie/nome-categoria/

Due modifiche rispetto al codice originale:

  1. È stata aggiunta la priorità a entrambi gli hook add_action per invertire l'ordine di esecuzione. L'ordine è importante in questo caso, perché le regole di riscrittura degli allegati del post type sovrascrivono quelle delle tassonomie. Effetto collaterale: gli URL degli allegati non funzionano per questo post type!

  2. La riscrittura per la tassonomia è stata cambiata in risultati/categorie.


// Crea un custom post type
function create_posttype() {
    register_post_type( 'results',
        array(
            'labels' => array(
                'name' => __( 'Risultati' ),
                'singular_name' => __( 'Risultati' )
            ),
            'public' => true,
            'has_archive' => true,
            'rewrite' => array('slug' => 'risultati'),
            'taxonomies'  => array( 'results', 'result-category' ),
        )
    );
}
// AGGIUNTA PRIORITÀ
add_action( 'init', 'create_posttype', 9 );

// Crea una categoria specifica per il post type
function tr_create_my_taxonomy() {
    register_taxonomy(
        'results-categories',
        'results',
        array(
            'label' => __( 'Categorie Risultati' ),
            // MODIFICATO LO SLUG
            'rewrite' => array( 'slug' => 'risultati/categorie' ),
            'hierarchical' => true,
            'has_archive' => true
        )
    );
}
// AGGIUNTA PRIORITÀ
add_action( 'init', 'tr_create_my_taxonomy', 8 );

Nota inoltre che il template più specifico per questo sarà taxonomy-results-categories.php, che ripiegherà su taxonomy.php, poi su archive.php.

4 ago 2017 21:58:24