Is_home()在函数.php文件中不起作用

时间:2013-09-27 作者:Jeremy Miller

我正在使用woo主题,并尝试使用一些woo钩子来钩住索引。来自我的子主题的php文件。

我正在使用以下代码:

function content_woo_main_before() {
    if  (is_home() || is_front_page()) {
        include(\'includes/home-news.php\');
    }
};
add_action(\'woo_main_before\', \'content_woo_main_before\', 15 );

function content_woo_main_after() {
    if  (is_home() || is_front_page()) {
        include(\'includes/home-news-after.php\');
    }
};
add_action(\'woo_main_after\', \'content_woo_main_after\', 15 );
奇怪的是,第一个函数按其在主页上的加载方式加载,而第二个函数则没有。我尝试了一些事情,如更改函数的运行顺序、更改名称,以及尝试将函数包装到条件语句中。什么都没用。

我是不是做错了什么?

我发现其他一些帖子也有类似的内容is_home() 在函数中不起作用。php,因为它在我们知道是否在主页上之前就运行了,但这不能解释为什么第一个函数工作正常,而第二个函数工作不正常。

有人有什么想法吗?

UPDATE:

因此,根据我得到的反馈,我使用get_template_part()

http://www.re-electsusanguidry.com/admin/

代码如下:

function content_woo_main_before() {
    echo \'is_home1 =\' . is_home();
    echo \'is_front_page1 = \' .  is_front_page();

    if  (is_home()) {
        get_template_part(\'home\', \'news\');
    }
};
add_action(\'woo_main_before\', \'content_woo_main_before\', 20 );



function content_woo_main_after() {
    echo \'is_home2 = \' . is_home() . \'<br />\';
    echo \'is_front_page2 = \' .  is_front_page();
    if  (is_front_page()) {
        echo \'is_home3 =\' . is_home();
        echo \'is_front_page3 = \' .  is_front_page();
        get_template_part(\'home\', \'after\');
    }
};
add_action(\'woo_main_after\', \'content_woo_main_after\', 21 );
这是我不明白的。如果这两个函数都使用is_home() || is_front_page(), 第一个函数返回“1”,但第二个函数根本不返回任何内容。因此,“is\\u home1”返回1,“is\\u front\\u page1”返回1,因此这是真的,并且内容会加载。但是,“is\\u home2”和“is\\u front\\u page2”不返回任何内容,条件语句返回false,并且不加载内容。

我尝试了加载顺序的各种数字,但没有任何效果。我输入了一些疯狂的长数字,但仍然没有返回真值。

另一个奇怪的是,如果我去掉第一个函数(之前是woo\\u main\\u),第二个函数就会按预期工作。只有当两者都存在时,第二个才不起作用。

我似乎在网上找不到其他有这个问题的人。我不知道怎么了。

有什么想法吗?

1 个回复
最合适的回答,由SO网友:Jeremy Miller 整理而成

事实证明,包含查询的第一个挂钩函数需要重置。

正在添加wp_reset_query(); 在初始查询修复问题后。

结束

相关推荐

About Hooks and Filters

嗯,我很难理解动作和过滤器之间的区别。我确实在代码中使用动作,但我是一个新手,甚至连一点过滤器都不知道。我去过codex,以及NickTheGeek、BillErickson、GaryJones等的多个网站,但没有去过vein。如果你能用简单的话告诉我,并举例说明动作、过滤器和挂钩的基本内容和区别。非常感谢。