ユーザーがどのタイプのページにいるかに基づいて、さまざまなヘッダーを提供しようとしています。これが私のコードです。
<!-- IF HOME -->
<?php if ( is_front_page() && is_home() ) : ?>
<?php get_template_part( 'template-parts/headers/home-header' ); ?>
<!-- IF TEMPLATES -->
<?php elseif ( is_page_template('archive-mobile_photo.php') ) : ?>
<?php get_template_part( 'template-parts/headers/home-header' ); ?>
<!-- IF POST -->
<?php else : ?>
<?php get_template_part( 'template-parts/headers/Zine-header' ); ?>
<?php endif; ?>
奇妙なことに、ホームページと投稿ページは問題なく機能していますが、is_page_template()
を使用したチェックは機能していません。私はクエリモニタプラグインを持っていて、ページがarchive-mobile_photo.php
テンプレートであることを確認しています。
私はかなりWordPressに不慣れです、そして、私は完全に迷っています。
次の行でmobile_photo
投稿タイプのアーカイブにいるかどうかを確認しているようです。
<?php elseif ( is_page_template( 'archive-mobile_photo.php' ) ) : ?>
そうであれば、代わりに is_post_type_archive( $post_types )
を使用してください。
<?php elseif ( is_post_type_archive( 'mobile_photo' ) ) : ?>
テンプレート部分としてヘッダーをロードするために条件を使用するよりも、各ページテンプレートに対して呼び出すときにget_header()
に組み込まれた機能を使用する方が読みやすくなります。これらのファイルはテーマフォルダのルートにあります。
2つのファイルにheader-home.php
とheader-Zine.php
という名前を付け、それらをページテンプレートで次のように呼び出します。
get_header('home');
そして
get_header('Zine');
もっと複雑なページに条件文が必要な場合でも、そのページをチェックして自分の基準に基づいて適切なファイルを読み込むことができます。コーデックスにも example があります。
get_header()
とget_template_part()
の違いが何であるかはわかりませんが、それ以外の場合はもっと読みやすく、WordPressの標準に従っています。