I put a if(is_home())
bit in my theme's functions.php and it doesn't seem to work. The function containing this bit is called on init so is_home
should work already.
2 Answers
is_home()
won't work until wp_query
is run. The earliest hook you can use where is_home will work is 'parse_query'
, but 'template_redirect'
would be better.
-
Technically,
'parse_query'
runs before'wp'
and is the absolute earliest you can check foris_home()
with any certainty. Aug 19, 2010 at 15:03 -
wp() is called after init, so template_redirect is the first hook, for more options and a better view, see: toolpress.de/…– hakreAug 19, 2010 at 15:08
-
You misunderstood me, hakre.
'parse_query'
and'wp'
are action hooks too, and that's what I was referencing. Aug 19, 2010 at 16:47 -
oh, no, not at all. I just wanted to underline what you wrote. I think your answer is just totally right.– hakreAug 20, 2010 at 9:54
To follow up on John's answer: Add a call to said function on one of the hooks mentioned by John and hakre.
Add, e.g., the following to your functions.php:
<?php
function my_function_name(){
if(is_home()) do_something();
}
add_action('template_redirect', 'my_function_name');
?>
EDIT: I misread your question at first -- it looks like you've got a function encapsulating the code already, it's just that you're firing on the wrong hook. Either break that section out into a separate function and have it fire at template_redirect, etc., or change where you're hooking in the first place.