web-dev-qa-db-ja.com

WP 4.4以降の日付と特定のカスタム投稿タイプでフィルタするにはどうすればいいですか?

WordPress 4.4では、日付の末尾に/?post_type = custom_post_typeを追加することで日付のアーカイブを表示する機能が導入されました。すなわちlocalhost/2016/02 /?post_type = news。

私はできると思っていました:if( is_post_type_archive('news) && is_date())...

しかし、私が見分けることができるものから:

  • is_date()は、ページが年/月/日のアーカイブを表示しているかどうかを検出するだけです。

  • is_archive()はすべてのアーカイブページに適用されます。

  • is_post_type_archive( 'CPT')はアーカイブページにのみ適用され、日付アーカイブを除外します。

ブログの日付のアーカイブページとは別に表示するために、ニュースの日付のアーカイブページにメニューを出力しようとしています。

1
ZachTRice

なぜif( is_post_type_archive('news) && is_date())が失敗し、あなたの状況でうまくいかないのかについての論理的な説明はありません。

  • is_date()はすべての日付アーカイブで真を返します

  • 投稿タイプのアーカイブではis_post_type_archive( 'news' )はtrueを返します

localhost/2016/02/?post_type=newsにアクセスすると、どちらもtrueになり、その特定のURLでのみtrueになります。

それが失敗した場合、あなたはメインクエリを壊す何か、おそらく悪いpre_get_postsアクションを持っているか、メインクエリオブジェクトを壊すページ上のどこかでquery_postsを使っています。 var_dump( $wp_query )を実行して、メインのクエリオブジェクトを調べる必要があります。 $queryプロパティを特に見てください

0
Pieter Goosen