web-dev-qa-db-fra.com

Les catégories sous les types de publication personnalisés ne s'affichent pas correctement

J'ai utilisé un type de message personnalisé sur mon site Web: j'ai ajouté archive-{mytaxonomy}.php et aussi single-{mytaxonomy}.php.

J'ai également créé une barre latérale séparée pour ma taxonomie et tout semble aller jusqu'à ce que je clique sur l'une de mes catégories. Ensuite, il charge archive.php.

Dois-je ajouter un autre code à mes fichiers?

1
user3067592

Les catégories et les taxonomies ne sont pas exactement les mêmes.

Une catégorie est une taxonomie par défaut

Vous pouvez utiliser des catégories avec des types de publication personnalisés, mais il est préférable d’utiliser des taxonomies personnalisées, car c’est un moyen extrêmement puissant de regrouper divers éléments de toutes sortes de façons.

add_action( 'init', 'wpsites_custom_taxonomy_types' );
function wpsites_custom_taxonomy_types() {

register_taxonomy( 'cpt-type', 'cpt',
    array(
        'labels' => array(
            'name'          => _x( 'Types', 'taxonomy general name', 'themename' ),
            'add_new_item'  => __( 'Add New CPT Type', 'themename' ),
            'new_item_name' => __( 'New CPT Type', 'themename' ),
        ),
        'exclude_from_search' => true,
        'has_archive'         => true,
        'hierarchical'        => true,
        'rewrite'             => array( 'slug' => 'cpt-type', 'with_front' => false ),
        'show_ui'             => true,
        'show_tagcloud'       => false,
    )
);

}

Si vous avez ajouté le code ci-dessus, qui offre la possibilité de créer des types de taxonomie personnalisés, vous devez créer un fichier portant le nom suivant:

taxonomy-cpt-type.php

Où cpt est le nom de votre type de message personnalisé.

Vous pouvez utiliser le code ci-dessus dans votre fichier de fonctions de thèmes enfants et remplacer toutes les instances de cpt et CPT par le nom de votre type de publication personnalisé.

Vous devez également ajouter cette ligne au code qui enregistre votre type de publication personnalisé:

'taxonomies'   => array( 'cpt-type' ),

Voici un exemple de travail:

add_action( 'init', 'wpsites_custom_post_type' );
function wpsites_custom_post_type() {

register_post_type( 'cpt',
    array(
        'labels' => array(
            'name'          => __( 'CPT', 'wpsites' ),
            'singular_name' => __( 'CPT', 'wpsites' ),
        ),
        'has_archive'  => true,
        'hierarchical' => true,
        'menu_icon'    => 'dashicons-portfolio',
        'public'       => true,
        'rewrite'      => array( 'slug' => 'cpt', 'with_front' => false ),
        'supports'     => array( 'title', 'editor', 'author', 'thumbnail', 'excerpt', 'trackbacks', 'custom-fields', 'revisions', 'page-attributes' ),
        'taxonomies'   => array( 'cpt-type' ),

    )
);

}

Encore une fois, remplacez toutes les instances de cpt et CPT par le nom de votre type de publication personnalisé.

Pour les pages d'archive de type publication personnalisées, utilisez quelque chose comme ceci:

archive-cpt.php

Pour les pages uniques de type publication personnalisée, utilisez quelque chose comme ceci:

single-cpt.php

Encore une fois, remplacez cpt dans le nom du fichier par le nom de votre type de publication personnalisée.

1
Brad Dalton

Pour obtenir des publications de type publication personnalisées avec une catégorie spécifique, utilisez la taxonomie personnalisée.

Enregistrez le nom de taxonomie du type d'article personnalisé comme des catégories, puis attribuez une catégorie à chaque article lorsque vous ajoutez un nouvel article. Voici l'exemple du code de type de message personnalisé et de sa taxonomie news_category

  add_action( 'init', 'news_my_taxonomy');
  function news_my_taxonomy(){
 // custom post type taxonomies
    $labels = array(
    'name' => 'Categories',
    'singular_name' => 'Category',
    'add_new' => 'Add Category',
    'add_new_item' => 'Add New Category',
    'all_items' => 'All Categories',
    'edit_item' => 'Edit Item',
    'new_item' => 'New Item',
    'view_item' => 'View Item',
    'update_item' => 'Update Category',
    'search_items' => 'Search Categories',
    'not_found' => 'No record found',
    'not_found_in_trash' => 'No items found in trash',
    'parent_item_colon' => 'Parent Item',
    'menu_name' => 'Categories'
    );
    $args = array(
        'labels' => $labels,
        'hierarchical' => true,
        'has_archive' => true,
        'rewrite' => array('slug' => 'news_category'),
        'show_ui' => true,
        'show_admin_column' => true,
        'query_var' => true,
        );
        register_taxonomy('news_category', array('news'), $args);
}

puis

créer une page de modèle de taxonomie 'taxonomy-news_category.php'

et ajoutez la requête pour obtenir les publications avec ce nom de catégorie

   $cat_name = single_cat_title;
   $args = array( 'category_name' => $cat_name, 'posts_per_page' => 12, 'order'=> 'ASC', 'post_type' => 'news', 'paged' => $paged);

C'est tout.

1
HeroWeb512

Si vous utilisez le plug-in "Custom Post Types UI" pour créer des types de publication personnalisés, assurez-vous que l'option A archivé est définie sur Vrai. Si vous avez créé manuellement le type de publication personnalisée, assurez-vous d'avoir ajouté "'has_archive' => true" à tableau.

Ensuite, disons que vous avez ajouté un nouveau type de publication personnalisé appelé "Films", puis vous avez ajouté une nouvelle taxonomie liée à celle-ci, laquelle slug s'appelle "genres", et ajouté un nouveau terme à Genres, lequel slug est appelé "horreur". voulait créer un modèle spécifique pour "Horror", vous pouvez ensuite créer un modèle nommé "taxonomy- {taxonomy} - {term} .php".

Dans ce cas, le modèle devrait être nommé taxonomy-genres-horror.php

0
Mohsen Abdelhameed