Why isn’t is_home() working correctly?

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.

Related posts

Leave a Reply

2 comments

  1. 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.

  2. 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.