Header.php内部的IS_FROWN_PAGE始终返回TRUE

时间:2016-11-29 作者:CoderScissorhands

我有一个使用reading 仪表板中的部分设置。当我在if语句中放置脚本时,使用is_front_page 在函数中。php,它只在指定的首页上运行,而不在其他页面上运行(表明该页面已正确指定)。

然而,我有一个if 我的标题中的语句。还使用is_front_page, 这似乎触发了我所有的页面(包括我没有指定为头版的页面)。

发生了什么事?你不能跑吗is_front_page 从页眉内。php,该代码是否仅应用于首页标题?我错过什么了吗?

这是我放在标题中的代码。在所有页面上返回true的php文件

<?php echo ( is_front_page ) ? \'frontPageLogo\' : NULL; ?>

(我相信它在所有页面上都是真的,因为它总是呼应“frontPageLogo”)

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

是的,它应该在头文件中正常工作。尝试使用标准的IF语句而不是速记:

if( is_front_page() ){
    echo \'Front page!\';
}
您必须在设置中配置它才能使用:

A static page (select below) 而不是Your latest posts

如果你愿意is_front_page() 仅在查看从下拉列表中选择的页面时返回TRUEFront Page (听起来像是这样)

然后您可以使用is_home() 如果为站点的首页设置了静态页面,则此函数将仅在设置为“帖子页面”的页面上返回true。

https://developer.wordpress.org/reference/functions/is_home/

是否is_home()is_front_page() 回来truefalse 取决于某些选项值的值:

  • get_option( \'show_on_front\' ): 返回\'posts\'\'page\'
  • get_option( \'page_on_front\' ): 返回ID 分配给首页的静态页面的get_option( \'page_for_posts\' ): 返回ID 当使用这些查询条件时,分配给博客帖子索引(帖子页面)的静态页面的:

    如果\'posts\' == get_option( \'show_on_front\' ):<网站首页:

    • is_front_page() 将返回true
    • is_home() 将返回true\'page\' == get_option( \'show_on_front\' ):<在指定用于显示站点首页的页面上:
      • is_front_page() 将返回true
      • is_home() 将返回false
      • is_front_page() 将返回false
      • is_home() 将返回true
SO网友:Brian Layman

为了记录在案,如果您通过包含parens来调用函数,而不是使用PHP解释器看起来不存在的常量,那么您的原始语句就可以运行了。常量is\\u front\\u page被评估为字符串“is\\u front\\u page”,由于“is\\u front\\u page”不是==false,因此它被评估为true,并且“frontPageLogo”始终被回响。明白了吗?

因此,不是:

<?php echo ( is_front_page ) ?  \'frontPageLogo\' : NULL; ?>
您想要:

   <?php echo ( is_front_page() ) ?  \'frontPageLogo\' : NULL; ?>