web-dev-qa-db-fra.com

404 pour une taxonomie personnalisée?

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é?

1
laukok

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 ou deactivation 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();
}
3
nmr