web-dev-qa-db-fra.com

Problème de type de message personnalisé et de taxonomie

Je travaille avec des types de publication personnalisés dans WordPress et j'ai une question à propos des slugs.

Supposons que nous devions créer un questionnaire personnalisé de type publication avec une catégorie de taxonomie. J'ai utilisé le code suivant:

// Create and register custom post type quiz
function create_posttype_quiz() {
    $labels = array(
        'name'               => _x( 'Quiz', 'post type general name' ),
        'singular_name'      => _x( 'Quiz', 'post type singular name' ),
        'add_new'            => _x( 'Add New', 'quiz' ),
        'add_new_item'       => __( 'Add New Quiz' ),
        'edit_item'          => __( 'Edit Quiz' ),
        'new_item'           => __( 'New Quiz' ),
        'all_items'          => __( 'All Quiz' ),
        'view_item'          => __( 'View Quiz' ),
        'search_items'       => __( 'Search Quiz' ),
        'not_found'          => __( 'No quiz found' ),
        'not_found_in_trash' => __( 'No quiz found in the Trash' ), 
        'parent_item_colon'  => '',
        'menu_name'          => 'Quizzes'
    );
    $args = array(
        'labels'        => $labels,
        'description'   => 'Holds our quiz and quiz specific data',
        'public'        => true,
        'menu_position' => 5,
        'supports'      => array( 'title', 'editor' ),
        'has_archive'   => true,
        'rewrite' => array('slug' => 'quiz'),
        'show_ui'             => true,
        'show_in_menu'        => true,
        'show_in_nav_menus'   => true,

    );

    register_post_type( 'quiz', $args );    
}
add_action( 'init', 'create_posttype_quiz' );

// Create and register quiz categories
function create_taxonomies_quiz() {
    $labels = array(
        'name'              => _x( 'Quiz Categories', 'taxonomy general name' ),
        'singular_name'     => _x( 'Quiz Category', 'taxonomy singular name' ),
        'search_items'      => __( 'Search Quiz Categories' ),
        'all_items'         => __( 'All Quiz Categories' ),
        'parent_item'       => __( 'Parent Quiz Category' ),
        'parent_item_colon' => __( 'Parent Quiz Category:' ),
        'edit_item'         => __( 'Edit Quiz Category' ), 
        'update_item'       => __( 'Update Quiz Category' ),
        'add_new_item'      => __( 'Add New Quiz Category' ),
        'new_item_name'     => __( 'New Quiz Category' ),
        'menu_name'         => __( 'Quiz Categories' ),
    );
    $args = array(
        'labels' => $labels,
        'hierarchical' => true,
        //'show_admin_column'=> true,
        'rewrite' => array('hierarchical'=>true, 'slug'=>'quizzes', 'with_front'=>false),
    );
    register_taxonomy( 'quiz_category', 'quiz', $args );
}
add_action( 'init', 'create_taxonomies_quiz', 0 );

Tout fonctionne bien, je peux créer et éditer des quiz, les ajouter à des catégories de quiz, etc. site.com/quiz/sample-quiz-one, site.com/quiz/sample-quiz-two ... et répertoriez les questionnaires dans les catégories de quiz, par exemple. site.com/quizzes/category-one, site.com/quizzes/category-two ...

Le problème est que je ne peux pas répertorier les questionnaires sous site.com/quizzes mais sur site.com/quiz. à la place. ( site.com/quizzes créera une erreur de page non trouvée).

En gros, j'aimerais pouvoir:

  • accédez à un seul quiz à l'adresse suivante: site.com/quiz/sample-quiz-one
  • répertoriez tous les quiz sur site.com/quizzes plutôt que site.com/quiz.

Est-il possible d'y parvenir sans htaccess ni aucune autre redirection, mais en utilisant le code ci-dessus (peut-être certains arguments que je ne connais pas)?

1
user2567824

Votre problème est que WordPress n’a pas d’archive pour toutes les publications de taxonomie spécifique, mais uniquement d’archives pour les publications de chaque terme de cette taxonomie.

Dans votre enregistrement CPT, vous pouvez définir 'has_archive' => 'quizzes' de sorte que le slug d'archive de type post soit différent du slug singulier. Cependant, je ne suis pas sûr que cela fonctionnera correctement si votre taxonomie utilise également ce slug pour les archives de termes.

2
Rarst