it-swarm.com.ru

is_page_template не работает должным образом

Я пытаюсь обслуживать разные заголовки в зависимости от типа страницы, на которой находится пользователь. Это мой код.

<!-- 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, и я в полной растерянности.

1
Garrett Scafani

Похоже, вы проверяете, находитесь ли вы в архиве типа записей 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' ) ) : ?>
1
Dave Romsey

Вместо того чтобы использовать условные выражения для загрузки заголовков в качестве частей шаблона, было бы удобнее использовать функциональность, встроенную в get_header(), при вызове его для каждого шаблона страницы. Эти файлы будут жить в корне папки темы.

Вы бы назвали свои два файла header-home.php и header-Zine.php и назвали их в шаблоне страницы с помощью:

get_header('home');

а также

get_header('Zine');

Если вам нужны условия для более сложной страницы, вы все равно можете проверить страницу и загрузить соответствующий файл в соответствии с вашими критериями. В кодексе также есть пример этого.

Я не уверен, в чем разница между get_header() и get_template_part(), но если ничего другого, я думаю, что он более читабелен и соответствует стандарту WordPress.

0
Jeremy Ross