web-dev-qa-db-fra.com

Comment déterminer si un type de publication personnalisé apparaît sur les modèles d'archives

Existe-t-il un moyen de déterminer si un type de publication personnalisé particulier sera affiché sur les pages d'archive par défaut ou les résultats de la recherche?

par exemple. Avec un type de message nommé (mal) books , existe-t-il un moyen de dire via le code l'un des éléments suivants:

  • Si des livres apparaissent dans les archives de date
  • Si des livres apparaissent dans les résultats de recherche
  • Si des livres apparaissent dans les archives de l'auteur

Je sais comment faire en sorte que les types de publications personnalisées apparaissent dans ces publications, mais j'ai creusé un peu et je ne vois aucune façon propre de déterminer si un type de publication personnalisé en particulier apparaîtra dans l'une des réponses ci-dessus ou non.

La raison principale pour laquelle je cherche ceci est que je crée des barres de fil d'Ariane personnalisées pour un thème ... et il serait bien de pouvoir afficher une barre de chemin de navigation des auteurs si la publication personnalisée en cours de visualisation prend en charge la fonctionnalité d'auteur et apparaissent dans l'archive de l'auteur.

1
Privateer

Vous pouvez obtenir l'objet de type publication et vérifier ses propriétés. Par exemple:

$post_type = get_post_type_object( 'books' );
if( $post_type->exclude_from_search ) {
    // The post type is not included in search results
}
if( $post_type->has_archive ) {
    // The post type has archive
}

Pour autant que je sache, les types de publication personnalisés ne sont inclus ni dans les archives de dates ni dans les archives d'auteurs si vous ne les codez pas (avec pre_get_posts par exemple). Je veux dire, ces options ne sont pas disponibles lors de l'enregistrement d'un type d'article. Donc, il n'y a aucun moyen de le vérifier à partir d'un objet de type post.

3
cybmeta

Si vous êtes au premier plan, vous pouvez utiliser sur le modèle la fonction de balise conditionnelle is_post_type_archive( $post_types ) . $post_types peut être une string ou une array de types de posts à vérifier.

0
Gregcta