web-dev-qa-db-fra.com

Type de message personnalisé avec des balises

Si j'ai bien compris, les types d'articles personnalisés peuvent également partager des tags avec les articles.

J'ai créé des tags et les ai appliqués à un article de blog et à un type d'article personnalisé.

Pourtant, lorsque je clique sur une étiquette, elle ne renvoie que les articles de blog.

J'ai cette ligne dans mon type de message de registre:

'taxonomies' => array('post_tag')

Mais j'ai aussi cela en dehors de la fonction

register_taxonomy_for_object_type('post_tag', 'projects');

Est-ce qu'ils font la même chose? Aussi, pourquoi ne renvoie-t-il pas de messages personnalisés avec cette balise?

2
user24554

Oui, les deux assignations fonctionnent de la même manière, mais l'archive post_tag utilise le type de publication post uniquement par défaut. Ne vous inquiétez pas, il y a un crochet pour vous: pre_get_posts.

Exemple avec des balises pour les pages:

// register tags for pages
add_action( 'wp_loaded', 'wpse_75297_register_tags_for_pages' );

function wpse_75297_register_tags_for_pages()
{
    register_taxonomy_for_object_type( 'post_tag', 'page' );
}

// add post type 'page' to tax query
add_filter( 'pre_get_posts', 'wpse_75297_add_pages_to_tax_query' );
function wpse_75297_add_pages_to_tax_query( $query )
{
    if ( ! is_main_query() or ! is_tag() )
        return $query;

    $query->set('post_type', array('page','post'));

    return $query;
}

Assurez-vous que le type de message est orthographié correctement. Si votre type de message est project, vous ne pouvez pas utiliser projects dans un autre filtre.

1
fuxia