web-dev-qa-db-fra.com

La page d'archive de taxonomie personnalisée ne fonctionne pas

J'ai un type de message personnalisé, course avec une taxonomie personnalisée associée curriculum-area. Sur le permalien domain.com/course/, une liste de tous les cours est affichée comme prévu. Cependant, sur le permalien domain.com/curriculum-area/equality, il affiche la page d'accueil. (La page d'accueil est une page statique). J'aimerais qu'il affiche à la place une archive de toutes les courses dans le curriculum-area: equality spécifié. De plus, si j'ai un front-page.php, cette page d'archive utilise également le modèle de front-page.php.

Comment puis-je obtenir le modèle archive.php à appliquer à cette taxonomie personnalisée?

// functions.php:

<?php

// add thumbnail support
add_theme_support( 'post-thumbnails' ); 

// add custom post type 'Course'
add_action( 'init', 'register_cpt_course' );

function register_cpt_course() {

    // custom taxonomy - curriculum area
    $args_curriculum_area_taxonomy = array(
        'hierarchical'          => true,
        'labels'                => array(
            'name' => 'Curriculum Areas',
            'singular_name' => 'Curriculum Area'
        ),
        'show_ui'               => true,
        'show_admin_column'     => true,
        'update_count_callback' => '_update_post_term_count',
        'query_var'             => true,
        'rewrite'               => true
    );

    register_taxonomy( 'Curriculum Area', 'course', $args_curriculum_area_taxonomy );

    // custom post type - course
    $cpt_course_args = array( 
        'labels' => array(
            'name' => 'Courses',
            'singular_name' => 'course'
        ),
        'hierarchical' => false,
        'description' => 'The place to display courses',
        'supports' => array( 'title', 'editor', 'thumbnail', 'custom-fields', 'revisions' ),
        'taxonomies' => array( 'curriculum_area' ),
        'public' => true,
        'show_ui' => true,
        'show_in_menu' => true,
        'menu_position' => 5,

        'show_in_nav_menus' => true,
        'publicly_queryable' => true,
        'exclude_from_search' => false,
        'has_archive' => true,
        'query_var' => true,
        'can_export' => true,
        'rewrite' => array(
            'slug' => 'course',
            'with_front' => true
        ),
        'capability_type' => 'post'
    );

    register_post_type( 'course', $cpt_course_args );

}

?>
1
Harry

Votre permalien est domain.com/curriculum-area/equality, mais vous avez enregistré votre taxonomie sous le nom Curriculum Area.

Pour que domain.com/curriculum-area/equality fonctionne, changez Curriculum Area dans:

register_taxonomy( 'Curriculum Area', 'course', $args_curriculum_area_taxonomy );

être:

register_taxonomy( 'curriculum-area', 'course', $args_curriculum_area_taxonomy );

Modifiez également cette ligne 'taxonomies' => array( 'curriculum_area' ), en 'taxonomies' => array( 'curriculum-area' ),

J'ai oublié de dire, n'oubliez pas de vider vos permaliens après ces changements! (En allant sur la page des paramètres de Permalinks et en appuyant simplement sur Sauvegarder).

2
Pieter Goosen

Cela dépend de la hiérarchie de vos modèles et non du code que vous avez affiché. archive.php est le modèle de secours pour date, taxonomie, tag, auteur, catégorie et archive ctp pages. Donc, il devrait être rendu votre page taxonomie des archives.

Examinez le code dans votre archive.php et voyez ce qu'il fait. Par exemple, il peut charger une boucle spécifique ou inclure un autre fichier qui effectue la boucle. Vous pouvez revenir à l’un des thèmes par défaut pour affiner le problème.

Il est généralement judicieux de spécifier un modèle spécifique pour curriculum-area en créant une page telle que taxonomy-curriculum-area.php. Si vous le souhaitez, vous pouvez même créer taxonomy-equality.php.

Voir: https://codex.wordpress.org/Template_Hierarchy#Custom_Taxonomies_display

0
Wyck