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.
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.