IS_PAGE_TEMPLATE未按预期工作

时间:2016-09-20 作者:Garrett Scafani

我试图根据用户所在的页面类型提供不同的标题。这是我的密码。

<!-- 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的新手,现在完全不知所措。

2 个回复
最合适的回答,由SO网友:Dave Romsey 整理而成

看起来你在检查你是否在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\' ) ) : ?>

SO网友:Jeremy Ross

与其使用条件将标题作为模板部分加载,不如使用get_header() 当您为每个页面模板调用它时。这些文件将位于主题文件夹的根目录中。

你可以命名你的两个文件header-home.phpheader-zine.php 并使用以下命令在页面模板中调用它们:

get_header(\'home\');

get_header(\'zine\');

如果您确实需要更复杂页面的条件,您仍然可以检查该页面并根据您的条件加载适当的文件。有一个example 法典中也有。

我不知道两者之间有什么区别get_header()get_template_part() 但如果没有其他内容,我认为它更具可读性,并且遵循WordPress标准。