Taxonomia personalizată duce la pagina 404 - Structura permalink reîmprospătată
Am un CPT (Custom Post Type):
function CPT_init(){
register_post_type('custcpt', array(
'labels' => array(
'name' => __('Produse'),
'singular_name' => __('Produs'),
'all_items' => __('Vezi Produse'),
'add_new' => __('Produs Nou'),
'add_new_item' => __('Produs Nou'),
'edit_item' => __('Editează Produs'),
'view_item' => __('Vezi Produs'),
'search_items' => __('Caută Produse'),
'no_found' => __('Nu s-au găsit Produse'),
'not_found_in_trash' => __('Nu există Produse în Coș')
),
'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');
Și Taxonomie cu CPT-ul meu:
function custcpt_category_taxonomy() {
$labels = array(
'name' => __( 'Categorii Produse' ),
'singular_name' => __( 'Categorie Produs' ),
'search_items' => __( 'Caută Categorii Produse' ),
'all_items' => __( 'Toate Categoriile de Produse' ),
'parent_item' => __( 'Categorie Părinte Produs' ),
'parent_item_colon' => __( 'Categorie Părinte Produs:' ),
'edit_item' => __( 'Editează Categoria Produsului' ),
'update_item' => __( 'Actualizează Categoria Produsului' ),
'add_new_item' => __( 'Adaugă Categorie Nouă de Produs' ),
'new_item_name' => __( 'Categorie Nouă de Produs' ),
'menu_name' => __( 'Categorii Produse' ),
);
$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');
Am o pagină de produse /products/
și o pagină template pentru taxonomie: taxonomy-custtax.php
, am încercat și taxonomy.php
dar nu pare să conteze. Am reîmprospătat permalink-urile probabil de 15-20 de ori până acum. Funcționează bine cu setarea implicită dar nu cu %postname%
. Am adăugat acest cod deasupra taxonomiei mele:
function custom_taxonomy_flush_rewrite() {
global $wp_rewrite;
$wp_rewrite->flush_rules();
}
add_action('init', 'custom_taxonomy_flush_rewrite');
Așa că atunci când accesez http://www.mywebsite.com/products/term
primesc 404 dintr-un motiv sau altul. Jur că taxonomia îmi dă mereu probleme, de fiecare. singură. dată.

Eliminați slash-urile din rewrite slug. Ar trebui să arate astfel:
...
'rewrite' => array('slug' => 'products', 'with_front' => false)
...
De asemenea, nu puteți avea același slug atât pentru o taxonomie cât și pentru un custom post type. Acestea trebuie să fie unice, altfel WordPress nu va ști care se aplică cui.
În plus, dacă aveți slug-ul custom post type-ului ca products
, nu puteți avea și o pagină cu slug-ul products
, deoarece va cauza conflicte.
În cele din urmă, pentru o listare de taxonomie personalizată, fișierul trebuie să se numească taxonomy-{taxonomy_name}.php
, deci în cazul dvs., ar trebui să se numească taxonomy-custtax.php
.
Pentru cele mai bune rezultate, vă sugerez să urmați acești pași:
Mai întâi, configurați custom post type-ul. Apoi, dacă setați slug-ul la products
(după resetarea regulilor de rewrite), vizitați www.mysite.com/products (asigurați-vă că nimic altceva în instalarea dvs. nu are un slug products). Ar trebui să vedeți o listă a produselor dvs. (presupunând că ați adăugat câteva intrări de produse).
Apoi, adăugați fișierul archive-custcpt.php
în tema dvs., modificați-l într-un mod unic și reîmprospătați pagina. Ar trebui să vedeți că acum încarcă lista de produse în acel șablon nou.
După aceea, adăugați taxonomia personalizată. Dacă slug-ul taxonomiei este prodcat
(pentru categoria de produse), ar trebui să puteți vizita www.mysite.com/prodcat/[term] (unde [term] = o categorie de produse pe care ați setat-o).
În final, adăugați fișierul taxonomy-custtax.php
, modificați-l într-un mod unic și reîmprospătați pagina. Ar trebui să vedeți lista afișată în noul fișier de șablon.

Eliminați "/" din ambele slug-uri și creați un fișier taxonomy-custtax.php
, apoi va funcționa corect.
Vă citesc codul mai jos cu corecțiile:
function CPT_init(){
register_post_type('custcpt', array(
'labels' => array(
'name' => __('Produse'),
'singular_name' => __('Produs'),
'all_items' => __('Vezi toate produsele'),
'add_new' => __('Produs nou'),
'add_new_item' => __('Produs nou'),
'edit_item' => __('Editează produs'),
'view_item' => __('Vezi produs'),
'search_items' => __('Caută produse'),
'no_found' => __('Nu s-au găsit produse'),
'not_found_in_trash' => __('Nu există produse în coșul de gunoi')
),
'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' => __( 'Categorii de produse' ),
'singular_name' => __( 'Categorie de produs' ),
'search_items' => __( 'Caută categorii de produse' ),
'all_items' => __( 'Toate categoriile de produse' ),
'parent_item' => __( 'Categoria părinte' ),
'parent_item_colon' => __( 'Categoria părinte:' ),
'edit_item' => __( 'Editează categoria' ),
'update_item' => __( 'Actualizează categoria' ),
'add_new_item' => __( 'Adaugă o categorie nouă' ),
'new_item_name' => __( 'Numele categoriei noi' ),
'menu_name' => __( 'Categorii de produse' ),
);
$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');
