web-dev-qa-db-ja.com

is_page()がアーカイブを扱っていませんか?

動的メニューを作成し、foreachループでページタイトルを使用してis_pageを実行しています。

<li class="<?= (is_page($tlp->post_title) ? 'active' : '');?>">
</li>

これは、WP adminで実際に作成されたページに対しては正常に機能します。しかし、アーカイブに依存している他の種類の投稿ではうまくいきません。

だから私は「チーム」の投稿タイプとそのデータを使うarchive-team.phpページを持っています。

そのページにいるとき、そのページが現在アクティブかどうかを確認する方法がありません。

私はis_archive()に出くわしましたが、期待どおりにはいきません。アーカイブの場合はそのまま返します。

私もこのメニューを作成するためにページをループしているので、私はブログページをセットアップしておき、そのブログページであればアーカイブを含めるためにデフォルトテンプレートをチェックするだけです。

何か手助け?

1
Lovelock

投稿、ページ、カスタム投稿タイプをカバーするis_page( $tpl->ID ) || is_single( $tlp->ID )を使用できます。

アーカイブリンクにはis_post_type_archive( $post_type )を使います。同じ種類の単一の投稿に対して強調表示する必要がある場合は、|| is_singular( $post_type )を追加します。

1
TheDeadMedic