Pourquoi ai-je 404 pour ma taxonomie personnalisée?
add_action('init', 'custom_taxonomy_flush_rewrite');
function custom_taxonomy_flush_rewrite() {
global $wp_rewrite;
$wp_rewrite->flush_rules();
}
add_action('init', 'create_publication_categories');
function create_publication_categories() {
$args = array(
'label' => __('Categories'),
'has_archive' => true,
'hierarchical' => true,
'rewrite' => array(
'slug' => 'topics',
'with_front' => false
),
);
$postTypes = array(
'publication'
);
$taxonomy = 'publication';
register_taxonomy($taxonomy, $postTypes, $args);
}
Donc, j'ai le modèle appelé taxonomy-publication.php
, mais je reçois toujours 404.
J'ai réinitialisé le permalien après this . Et d’autres réponses telles que ceci et ceci .
Mais je reçois toujours 404. Des idées de ce que j'ai manqué?
Vous utilisez le même slug publication
pour la taxonomie personnalisée et le type de publication personnalisé. Slug devrait être unique .
Une autre chose (non liée à 404) est le flush_rules
. Comme vous pouvez le lire ici flush sur le crochet init
est une mauvaise idée.
Important :
- Purger les règles de réécriture est une opération coûteuse, des tutoriels et des exemples suggèrent de l’exécuter sur le hook
init
. C'est une mauvaise pratique . Il devrait être exécuté soit sur le hook 'shutdown', soit sur l'activation du plugin/theme.- Vider les règles une fois (il est préférable de stocker l'état dans option au lieu de
activation
oudeactivation
car sur MultiSite, elles sont inutiles), ou lorsque vous savez que les règles de réécriture doivent être modifiées. Ne le faites pas avec un crochet qui se déclenche régulièrement . Plus d'informations dans les commentaires sur WP Post de l'ingénieur: Custom Post Type et Permalink- Assurez-vous que les types de post personnalisés et les taxonomies sont correctement enregistrés avant effacer les règles de réécriture, en particulier lors de l'activation du plugin: Liste de contrôle d'activation pour les développeurs de plugins WordPress (inaccessible)
Exemple
Règles Flush sur l'activation du thème:
add_action( 'after_switch_theme', 'custom_taxonomy_flush_rewrite' );
function custom_taxonomy_flush_rewrite() {
global $wp_rewrite;
$wp_rewrite->flush_rules();
}