La Tassonomia Personalizzata Porta alla Pagina 404 - Struttura Permalink Aggiornata

17 ott 2013, 23:10:08
Visualizzazioni: 27.7K
Voti: 3

Ho un CPT (Custom Post Type):

function CPT_init(){
    register_post_type('custcpt', array(
        'labels'            =>  array(
            'name'          =>      __('Prodotti'),
            'singular_name' =>      __('Prodotto'),
            'all_items'     =>      __('Visualizza Prodotti'),
            'add_new'       =>      __('Nuovo Prodotto'),
            'add_new_item'  =>      __('Nuovo Prodotto'),
            'edit_item'     =>      __('Modifica Prodotto'),
            'view_item'     =>      __('Visualizza Prodotto'),
            'search_items'  =>      __('Cerca Prodotti'),
            'no_found'      =>      __('Nessun Prodotto Trovato'),
            'not_found_in_trash' => __('Nessun Prodotto nel Cestino')
                                ),
        'public'            =>  true,
        'publicly_queryable'=>  true,
        'show_ui'           =>  true, 
        'query_var'         =>  true,
        'show_in_nav_menus' =>  false,
        'capability_type'   =>  'post',
        'hierarchical'      =>  false,
        'rewrite'           =>  array('slug' => '/products/', 'with_front' => false),
        'menu_position'     =>  21,
        'supports'          =>  array('title','editor', 'thumbnail'),
        'has_archive'       =>  true
    ));
}
add_action('init', 'CPT_init');

E una Tassonomia con il mio CPT:

function custcpt_category_taxonomy() {
    $labels = array(
        'name'              => __( 'Categorie Prodotti' ),
        'singular_name'     => __( 'Categoria Prodotto' ),
        'search_items'      => __( 'Cerca Categorie Prodotti' ),
        'all_items'         => __( 'Tutte le Categorie Prodotti' ),
        'parent_item'       => __( 'Categoria Prodotto Genitore' ),
        'parent_item_colon' => __( 'Categoria Prodotto Genitore:' ),
        'edit_item'         => __( 'Modifica Categoria Prodotto' ), 
        'update_item'       => __( 'Aggiorna Categoria Prodotto' ),
        'add_new_item'      => __( 'Aggiungi Nuova Categoria Prodotto' ),
        'new_item_name'     => __( 'Nuova Categoria Prodotto' ),
        'menu_name'         => __( 'Categorie Prodotti' ),
    ); 
    $args = array(
        'labels'            => $labels,
        'public'            =>  true,
        'hierarchical'      =>  true,
        'show_in_nav_menus' =>  true,
        'has_archive'       =>  true,
        'rewrite'           =>  array('slug' => '/products/', 'with_front' => false),
    );
    register_taxonomy( 'custtax', 'custcpt', $args );
}
add_action( 'init', 'custcpt_category_taxonomy');

Ho una pagina prodotti /products/ e una pagina template per la tassonomia: taxonomy-custtax.php, ho provato anche taxonomy.php ma non sembrava fare differenza. Ho aggiornato i permalink probabilmente 15-20 volte ormai. Funziona bene con l'impostazione predefinita ma non con %postname%. Ho aggiunto questo sopra la mia tassonomia:

function custom_taxonomy_flush_rewrite() {
    global $wp_rewrite;
    $wp_rewrite->flush_rules();
}
add_action('init', 'custom_taxonomy_flush_rewrite');

Quindi quando vado su http://www.mywebsite.com/products/term ottengo un 404 per qualche ragione. Giuro che la tassonomia mi dà sempre problemi, ogni. singola. volta.

0
Tutte le risposte alla domanda 2
0
12

Rimuovi gli slash sullo slug di riscrittura. Dovrebbe essere così:

 ...
 'rewrite'           =>  array('slug' => 'products', 'with_front' => false)
 ...

Inoltre, non puoi avere lo stesso slug sia per una tassonomia che per un custom post type. Devono essere univoci, altrimenti WordPress non saprà a quale dei due si riferisce.

In aggiunta, se hai lo slug del tuo custom post type come products, non puoi avere anche una pagina con slug products, altrimenti causerà conflitti.

Infine, per un elenco di tassonomia personalizzata, il file dovrebbe essere intitolato taxonomy-{nome_tassonomia}.php, quindi nel tuo caso dovrebbe essere taxonomy-custtax.php.

Per ottenere i migliori risultati, ti suggerisco di procedere per passi:

Prima di tutto, configura il custom post type. Poi, se imposti lo slug a products (dopo aver resettato le regole di riscrittura), visita www.miosito.com/products (assicurati che niente altro nella tua installazione abbia uno slug products). Dovresti vedere un elenco dei tuoi prodotti (supponendo che tu abbia aggiunto alcune voci di prodotto).

Poi, aggiungi il tuo file archive-custcpt.php al tuo tema, modificandolo in modo univoco, e ricarica. Dovresti vedere che ora sta caricando la lista dei prodotti all'interno di quel nuovo template.

Successivamente, aggiungi la tua tassonomia personalizzata. Se lo slug della tua tassonomia è prodcat (per la categoria dei prodotti), dovresti poter visitare www.miosito.com/prodcat/[termine] (dove [termine] = una categoria di prodotto che hai impostato).

Infine, aggiungi il tuo file taxonomy-custtax.php, modificandolo in modo univoco, e ricarica. Dovresti vedere l'elenco apparire nel tuo nuovo file template.

17 ott 2013 23:20:12
0

Rimuovi "/" dallo slug e crea un file taxonomy-custtax.php per far funzionare correttamente.

Riporto qui sotto il tuo codice corretto:

function CPT_init(){
    register_post_type('custcpt', array(
        'labels'            =>  array(
            'name'          =>      __('Prodotti'),
            'singular_name' =>      __('Prodotto'),
            'all_items'     =>      __('Visualizza Prodotti'),
            'add_new'       =>      __('Nuovo Prodotto'),
            'add_new_item'  =>      __('Nuovo Prodotto'),
            'edit_item'     =>      __('Modifica Prodotto'),
            'view_item'     =>      __('Visualizza Prodotto'),
            'search_items'  =>      __('Cerca Prodotti'),
            'no_found'      =>      __('Nessun Prodotto Trovato'),
            'not_found_in_trash' => __('Nessun Prodotto nel Cestino')
                                ),
        'public'            =>  true,
        'publicly_queryable'=>  true,
        'show_ui'           =>  true, 
        'query_var'         =>  true,
        'show_in_nav_menus' =>  false,
        'capability_type'   =>  'post',
        'hierarchical'      =>  false,
        'rewrite'           =>  array('slug' => 'products', 'with_front' => false),
        'menu_position'     =>  21,
        'supports'          =>  array('title','editor', 'thumbnail'),
        'has_archive'       =>  true
    ));
}
add_action('init', 'CPT_init');


function custcpt_category_taxonomy() {
    $labels = array(
        'name'              => __( 'Categorie Prodotti' ),
        'singular_name'     => __( 'Categoria Prodotto' ),
        'search_items'      => __( 'Cerca Categorie Prodotti' ),
        'all_items'         => __( 'Tutte le Categorie Prodotti' ),
        'parent_item'       => __( 'Categoria Prodotto Genitore' ),
        'parent_item_colon' => __( 'Categoria Prodotto Genitore:' ),
        'edit_item'         => __( 'Modifica Categoria Prodotto' ), 
        'update_item'       => __( 'Aggiorna Categoria Prodotto' ),
        'add_new_item'      => __( 'Aggiungi Nuova Categoria Prodotto' ),
        'new_item_name'     => __( 'Nuova Categoria Prodotto' ),
        'menu_name'         => __( 'Categorie Prodotti' ),
    ); 
    $args = array(
        'labels'            => $labels,
        'public'            =>  true,
        'hierarchical'      =>  true,
        'show_in_nav_menus' =>  true,
        'has_archive'       =>  true,
        'rewrite'           =>  array('slug' => 'products', 'with_front' => false),
    );
    register_taxonomy( 'custtax', 'custcpt', $args );
}
add_action( 'init', 'custcpt_category_taxonomy');
17 dic 2018 15:35:53