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')はアーカイブページにのみ適用され、日付アーカイブを除外します。
ブログの日付のアーカイブページとは別に表示するために、ニュースの日付のアーカイブページにメニューを出力しようとしています。
なぜ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
プロパティを特に見てください