web-dev-qa-db-fra.com

Articles de type d'article personnalisé non affichés dans les archives "catégorie"

J'ai créé plusieurs types d'articles personnalisés qui doivent partager la "catégorie".

La création se fait comme ceci:

 $args = array(
        'label'               => __('MyPostType', 'key'),
        'description'         => __('MyPostType', 'key'),
        'labels'              => $labels,
        'supports'            => array('title', 'editor', 'excerpt', 'author', 'thumbnail', 'comments', 'trackbacks', 'revisions', 'custom-fields'),
        'taxonomies'          => array('category'),
        'hierarchical'        => false,
        'public'              => true,
        'show_ui'             => true,
        'show_in_menu'        => true,
        'menu_position'       => 5,
        'menu_icon'           => 'dashicons-admin-tools',
        'show_in_admin_bar'   => true,
        'show_in_nav_menus'   => true,
        'can_export'          => true,
        'has_archive'         => 'techblog',
        'exclude_from_search' => false,
        'publicly_queryable'  => true,
        'capability_type'     => 'post',
        'rewrite'             => $rewrite
    );

register_post_type('myposttype', $args);

Cela fonctionne comme prévu et je peux utiliser des catégories globalement.

Le problème

L'archive des catégories ne montre que les messages de "post". S'il n'y a pas de message, il ne dit que "rien n'a été trouvé". Dans les méta-informations sur les publications uniques, les catégories de publications sont répertoriées. Je peux cliquer dessus et obtenir une page "rien trouvé".

Malheureusement, la documentation ne dit rien à ce sujet. Dois-je faire autre chose? Je pensais que cela devrait fonctionner hors de la boîte.

1
Adrian

Vous devez vous connecter à la requête car la page d'archivage des catégories n'inclut explicitement que le type 'post' et rien d'autre.

function namespace_add_custom_types( $query ) {
  if( (is_category() || is_tag()) && $query->is_archive() && empty( $query->query_vars['suppress_filters'] ) ) {
    $query->set( 'post_type', array(
     'post', 'myposttime'
        ));
    }
    return $query;
}
add_filter( 'pre_get_posts', 'namespace_add_custom_types' );

Modifié à partir de cet article sur les astuces CSS.

6
socki03