WordPress 4.4 introduit la possibilité d'afficher des archives de date en ajoutant /? Post_type = custom_post_type à la fin de l'URL de la date. c'est-à-dire localhost/2016/02 /? post_type = news.
J'avais supposé que je pouvais faire: if( is_post_type_archive('news) && is_date())...
Mais de ce que je peux discerner:
is_date () détectera uniquement si la page affiche une archive année/mois/jour. is_date () s'applique également à toutes les archives de dates CPT.
is_archive () s'applique à toutes les pages d'archives
is_post_type_archive ('CPT') s'appliquera uniquement à la page d'archive et filtrera les archives de date
J'essaie de créer un menu sur les pages d'archives des dates de news pour les afficher séparément des pages d'archives des dates de blog.
Il n'y a aucune explication logique pour laquelle if( is_post_type_archive('news) && is_date())
devrait échouer et ne pas fonctionner dans votre situation.
is_date()
retourne vrai sur toutes les archives de date
is_post_type_archive( 'news' )
retournera true sur les archives de type post
Lorsque vous visitez localhost/2016/02/?post_type=news
, ces deux types de sonnerie sonnent vrais et ils ne sonneront seulement que sur cette URL spécifique.
Si cela échoue, vous avez quelque chose qui casse votre requête principale, peut-être une mauvaise action pre_get_posts
ou vous utilisez query_posts
quelque part sur la page qui cassera l'objet de requête principal. Vous devriez faire var_dump( $wp_query )
et inspecter l'objet de requête principal. Regardez spécialement la propriété $query