web-dev-qa-db-fra.com

Comment filtrer par date et un type de message personnalisé spécifique post-WP 4.4?

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.

1
ZachTRice

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

0
Pieter Goosen