wordpress:is_front_page()用于静态页面不起作用

时间:2016-03-14 19:31:46

标签: php wordpress

我知道这个问题已经被问了很多,但每次我在这些问题上看到答案时,我都会像我应该的那样实施它。我的问题如下:

我在index.php中添加了以下语句,为我的静态主页(称为page-home.php)加载一个不同的标题(保存在header-frontpage.php中)。

if(is_front_page())
{
    get_header('frontpage');
}
else 
{
    get_header();
}

我还将word-home设置为wordpress settings-> read中的静态首页。

这个结果不应该在我的主页加载header-frontpage.php吗?现在它只是为我的首页收回了我的header.php。可以在www.koencuijpers.com上找到实时预览(header.php加载错误)和www.koencuijpers.com/spot-map(正确加载header.php)。

我的index.php的完整代码是:

<?php
/**
 * The main template file.
 *
 * This is the most generic template file in a WordPress theme
 * and one of the two required files for a theme (the other being style.css).
 * It is used to display a page when nothing more specific matches a query.
 * E.g., it puts together the home page when no home.php file exists.
 *
 * @link https://codex.wordpress.org/Template_Hierarchy
 *
 * @package Spot_Utrecht
 */

if(is_front_page())
{
    get_header('frontpage');
}
else 
{
    get_header();
}
 ?>

    <div id="primary" class="content-area">
        <main id="main" class="site-main" role="main">

        <?php
        if ( have_posts() ) :

            if ( is_home() && ! is_front_page() ) : ?>
                <header>
                    <h1 class="page-title screen-reader-text"><?php single_post_title(); ?></h1>
                </header>

            <?php
            endif;

            /* Start the Loop */
            while ( have_posts() ) : the_post();

                /*
                 * Include the Post-Format-specific template for the content.
                 * If you want to override this in a child theme, then include a file
                 * called content-___.php (where ___ is the Post Format name) and that will be used instead.
                 */
                get_template_part( 'template-parts/content', get_post_format() );

            endwhile;

            the_posts_navigation();

        else :

            get_template_part( 'template-parts/content', 'none' );

        endif; ?>

        </main><!-- #main -->
    </div><!-- #primary -->

<?php
get_sidebar();
get_footer();
?>

1 个答案:

答案 0 :(得分:1)

如果您将主页设置为静态页面,那么WordPress将遵循其模板层次结构来决定使用哪个模板:

https://developer.wordpress.org/themes/basics/template-hierarchy/#front-page-display

这意味着WordPress将不会使用index.php作为首页的模板,因此无论你做什么改变都没有效果。

因此,您需要在相应的模板中包含if语句(可能是front-page.php,具体取决于您的主题设置)。