IS_FROWN_PAGE只适用于主题文件,不适用于函数.php

时间:2012-02-09 作者:Mike

如果我在首页中使用is\\u front\\u page()。php文件它按预期工作。但是,如果我在主题函数中使用相同的函数。php文件它不工作。这是正常行为吗?如果不是的话,能不能设法解决问题?

在“设置->阅读”中,我将我的首页设置为一个名为“首页”的页面,所以我认为一切都已设置完毕。

EDIT

将以下内容添加到函数中。php不起作用,但我保证,如果我在标题中添加is\\u home\\u page(),它会像预期的那样起作用。php文件

add_action(\'init\', \'my_test\');

function my_test(){
    if(is_front_page())
        echo \'is it?\';
}

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

这可能是正常行为,具体取决于您使用的方式is_front_page 在函数文件中。

如果您在functions.php, 这行不通。

为什么?因为WordPress加载functions.php$wp_query object 已使用当前页面设置。is_front_page 是一个包裹$wp_query->is_front_page(), 如果查询尚未设置,它将始终返回false(如果设置了,则抛出警告wp_debug 在…上

抄本:

警告:您只能在WordPress中的init操作挂钩之后使用条件查询标记。对于主题,这意味着如果在函数体中使用条件标记,它将永远无法正常工作。php,即函数外部。

http://codex.wordpress.org/Conditional_Tags

SO网友:Stephen Miller

法典引用人chrisguitarguy 不再有效!!已更新为:

警告:只能使用条件查询标记after WordPress中的posts\\u selection操作挂钩(the wp action hook is the first one through which you can use these conditionals). 对于主题,这意味着如果在函数体中使用条件标记,它将永远无法正常工作。php,即函数外部。

因此,init钩子不再工作!!!如上所述,如果您想使用条件查询标记,那么wp钩子是第一个可以使用的钩子。因此,要使条件标记起作用,这里有一个最小的样板文件:

add_action(\'wp\', \'function_that_uses_conditional_tags\');

function function_that_uses_conditional_tags() {
    // place code here
}
然而,请注意,虽然“警告”似乎普遍适用于条件标签,因为它出现在关于Conditional Tags, 它没有强调它实际上只适用于前端。

wp钩子甚至不会在后端启动!因此,如果将其与is\\u admin()一起使用,它的计算结果将永远不会为true。在这种情况下,请使用不同的挂钩。实际上,init对is\\u admin();)很好。

SO网友:Chip Bennett

这是预期的行为。这个functions.php 在设置查询并使其可用之前,会对文件进行解析,因此如果if ( is_front_page() ) 裸体坐在functions.php, 它将返回false,因为还没有查询。

你需要做的是is_front_page() 回调函数内部的条件,即hooked into an appropriate action - i、 e.在查询设置/可用后激发的操作。

作为参考,我认为functions.php 在处分析plugins_loaded (可能是setup_theme), 查询条件应在或之后可用init.

编辑加载的插件和设置主题对我不起作用

当然,那些钩子对你不起作用。他们开火了before the query is setup. 这个is_front_page() “条件”仅可用after the query is setup, 发生在init.

如果用户正在查看首页,我需要删除\\u action()。

你不是真的告诉我们exactly 你想做什么。你的问题只是问什么时候is_front_page() 可用,这就是我们的回答。知道如何/何时删除操作是一个完全不同的问题。您需要提供add_action() 要删除的呼叫。

SO网友:chifliiiii

template\\u标记使用的早期挂钩是wp 动作钩。之前的所有钩子init 钩子不适用于is\\u front\\u page()等模板标记

结束

相关推荐

从静态FrontPage中删除页面标题

我想从静态frontpage中删除帖子标题。就那一页。我从free Press75主题创建了一个儿童主题。所以我想在我的孩子主题的功能上做些改变。php。我使用了此代码,但它删除了所有页面、帖子和导航中的标题:add_filter( \'the_title\', \'remove_page_title\' ); function remove_page_title() { if(is_page(\'138\')) { } return \'