Pagina non trovata nella tassonomia del custom post type

23 gen 2015, 05:26:10
Visualizzazioni: 20.6K
Voti: 4

Ho creato un custom post type con tassonomie e quando vado sulla pagina della tassonomia e visualizzo una delle tassonomie ottengo un errore "pagina non trovata" come se la tassonomia non fosse stata creata.

Qualche suggerimento?

/*Prodotti*/
$labels = array(
    'name' => _x('Prodotti', 'nome generale del tipo di post'),
    'singular_name' => _x('Prodotto', 'nome singolare del tipo di post'),
    'add_new' => _x('Aggiungi Nuovo', 'Prodotto'),
    'add_new_item' => __("Aggiungi Nuovo Prodotto"),
    'edit_item' => __("Modifica Prodotto"),
    'new_item' => __("Nuovo Prodotto"),
    'view_item' => __("Visualizza Prodotto"),
    'search_items' => __("Cerca Prodotto"),
    'not_found' =>  __('Nessun prodotto trovato'),
    'not_found_in_trash' => __('Nessun prodotto trovato nel Cestino'), 
    'parent_item_colon' => ''
  );

$args = array(
    'labels' => $labels,
        'singular_label' => __('Prodotti'),
        'public' => true,
        'show_ui' => true,
        'capability_type' => 'post',
        'hierarchical' => false,
        'rewrite' => true,
        'query_var' => 'products',
        'taxonomies' => array('products-cat'),
        'supports' => array('title', 'editor', 'custom-fields', 'thumbnail', 'excerpt'),
        'has_archive' => true,
);
register_post_type( 'products' , $args );

// Aggiungere alla funzione admin_init
add_filter('manage_edit-products_columns', 'add_new_products_columns');
function add_new_products_columns($columns) {
$columns = array(
    'cb' => '<input type="checkbox" />',
        'images' => 'Immagini',
    'title' => 'Nome Prodotto',
        'author' => 'Autore',
        'product-categories' => 'Categorie',
        'tags' => 'Tag',
        'date' => 'Data',
); 
    return $columns;
}

add_action('manage_products_posts_custom_column', 'manage_products_columns', 10, 2);

function manage_products_columns($column_name, $id) {
    global $wpdb;
    switch ($column_name) {

    case 'images':
            //echo get_the_post_thumbnail( $page->ID, array(50,50) ); 
    break;

    case 'product-categories':
        echo get_the_term_list($post->ID, 'products-cat', '', ', ','');
    break;

        default:
        break;
    } 
}

add_action( 'init', 'products_create_taxonomies', 0 );

function products_create_taxonomies() 
{
    // Categorie Prodotti
    register_taxonomy('products-cat',array('products'),array(
        'hierarchical' => true,
        'label' => 'Categorie Prodotti',
        'singular_name' => 'Categoria Prodotti',
        'show_ui' => true,
        'query_var' => true,
        'rewrite' => array('slug' => 'products' )
    ));
}

/*Fine Prodotti*/

Ho questo nella mia pagina degli archivi

archive-products.php

<?php get_header(); ?>

<?php if ( have_posts() ) : ?>
<?php while ( have_posts() ) : the_post();?>
                <?php the_title(); ?>   
<?php endwhile; endif; ?>
0
Tutte le risposte alla domanda 4
3
17

Ho riscontrato lo stesso problema sulla mia piattaforma locale con nginx. Dopo aver aggiornato i permalink nelle impostazioni, tutto ha funzionato correttamente. Impostazioni > Permalink > Salva modifiche (senza apportare modifiche)

16 feb 2017 14:09:43
Commenti

Prova questa soluzione suggerita prima di fare qualsiasi altra cosa. Fondamentalmente funziona per me ogni volta.

Braza Braza
21 lug 2020 13:12:19

Wordpress è così stupido.

serraosays serraosays
14 ott 2020 00:41:54

L'ho provato più di 10 volte ma non funziona per me. Mostra una pagina non trovata.

questionbank questionbank
4 lug 2021 19:56:23
1

Dopo alcune ricerche ho trovato un blog che in realtà aveva una risposta a questo problema.

Ecco la funzione insieme all'url del blog.

function taxonomy_slug_rewrite($wp_rewrite) {
    $rules = array();
    // ottieni tutte le tassonomie personalizzate
    $taxonomies = get_taxonomies(array('_builtin' => false), 'objects');
    // ottieni tutti i custom post type
    $post_types = get_post_types(array('public' => true, '_builtin' => false), 'objects');

    foreach ($post_types as $post_type) {
        foreach ($taxonomies as $taxonomy) {

            // scorri tutti i post type a cui è assegnata questa tassonomia
            foreach ($taxonomy->object_type as $object_type) {

                // controlla se la tassonomia è registrata per questo custom type
                if ($object_type == $post_type->rewrite['slug']) {

                    // ottieni gli oggetti delle categorie
                    $terms = get_categories(array('type' => $object_type, 'taxonomy' => $taxonomy->name, 'hide_empty' => 0));

                    // crea le regole
                    foreach ($terms as $term) {
                        $rules[$object_type . '/' . $term->slug . '/?$'] = 'index.php?' . $term->taxonomy . '=' . $term->slug;
                    }
                }
            }
        }
    }
    // unisci con le regole globali
    $wp_rewrite->rules = $rules + $wp_rewrite->rules;
}
add_filter('generate_rewrite_rules', 'taxonomy_slug_rewrite');
23 gen 2015 11:13:42
Commenti

URL del blog non funzionante

questionbank questionbank
4 lug 2021 19:57:03
0

Consiglierei almeno due cose:

  1. Cambia la priorità per la tua azione products_create_taxonomies ad almeno 1, se non 5 o superiore. (Penso che 0 non sia valido per le priorità delle azioni per qualche motivo)

  2. Aggiungi la creazione del tuo post type in un'azione init proprio come hai fatto per le tassonomie, con una priorità più alta rispetto alla tassonomia (dato che le stai collegando tramite la tassonomia).

Se questi due cambiamenti non risolvono il problema, prova a impostare entrambi (senza collegarli tramite le loro strutture) e poi chiama il seguente codice con una priorità più alta (sempre durante init):

register_taxonomy_for_object_type( 'products-cat', 'products' );

Questo dovrebbe garantire che siano completamente e correttamente collegati.

23 gen 2015 06:14:53
5

Penso che il tuo problema principale qui sia il rewrite per la tua tassonomia. Attualmente, il rewrite per la tassonomia è così

'rewrite' => array('slug' => 'products' )

Questo è esattamente ciò che significa questo rewrite nel tuo custom post type. Il seguente

'rewrite' => true,

si traduce in questo nel tuo custom post type

'rewrite' => array('slug' => 'products' )

Di default, questo conflitto nei rewrite causerà un errore 404 per le richieste alla tassonomia. Come soluzione, puoi modificare il rewrite per la tua tassonomia, oppure dare un'occhiata a questo post che ho scritto di recente su questo sito per una soluzione alternativa migliore.

Importante: Ricorda di svuotare i permalink dopo ogni aggiornamento del codice per reimpostare i permalink con la nuova struttura.

23 gen 2015 08:53:03
Commenti

questo ha risolto il problema ma il nome dello slug è cambiato nella tassonomia registrata che è products-cat. Come posso mantenere rewrite true avendo il nome dello slug come products?

Jeremy Love Jeremy Love
23 gen 2015 09:05:27

Hai controllato il post linkato? Gli stessi slug di rewrite per sia i custom post types che le tassonomie personalizzate sono sempre un problema da far funzionare. Se la memoria non mi inganna, l'utente che ha postato la domanda a cui ho risposto aveva scritto un post proprio su quell'esatto problema. Dai un'occhiata anche ai suoi post

Pieter Goosen Pieter Goosen
23 gen 2015 09:09:59

Ok ho esaminato il post che mi hai consigliato e ho cambiato dall'uso dei trattini agli underscore e ho scaricato il plugin permalink. Dopo aver apportato queste modifiche mi sono reso conto che cambiare il rewrite del codice da quello che ho a renderlo true non è la stessa cosa. Quando lo imposto a true rende l'url uguale al nome della tassonomia registrata. L'url mostra anche il nome del custom post type e il nome della tassonomia registrata, ad esempio products/products-cat/automotive/. Hai qualche suggerimento?

Jeremy Love Jeremy Love
23 gen 2015 10:20:10

Ad essere sincero, questo è tutto ciò che posso fare per aiutarti purtroppo. Francamente, per quanto riguarda i rewrite, siamo nella stessa barca :-). So che avere gli stessi URL per le pagine di tassonomia e per gli archivi dei custom post type è possibile con regole di rewrite aggiuntive. Penso che con una regola di rewrite personalizzata, tu possa rimuovere il nome della tassonomia nella struttura dell'URL nel commento precedente che hai postato. Sfortunatamente, non ho mai approfondito personalmente qualcosa del genere. Spero che tu riesca a risolvere, e se lo fai, per favore posta la tua soluzione e accetta la tua stessa risposta. Sarà davvero utile per gli utenti futuri

Pieter Goosen Pieter Goosen
23 gen 2015 10:42:36

Grazie, continuerò a cercare una soluzione e posterò qui quando troverò una risposta.

Jeremy Love Jeremy Love
23 gen 2015 10:44:43