How do you check if a WordPress template file exist?

Is there a native function to check if a theme a template file. For instance, if a theme is not using the ‘home.php’ file, then execute some code…

Related posts

Leave a Reply

2 comments

  1. So I would add to the Answer the following:

    function foo_function() {
        $located = locate_template( 'home.php' );
         if ( !empty( $located ) ) {
              // 'home.php' found in Theme, do something
         }
    }
    add_action('init', 'foo_function');
    // remember to change both of the parameters above, first one for where you want the
    // action to happen and the second one the name of the function declared
    

    As @Chip Bennett, said it will check both TEMPLATEPATH and STYLESHEETPATH, but I would append the code to a hook instead of just putting it in the functions.php file.

    But’s up to you.

  2. Any reason locate_template() (Codex ref) wouldn’t work?

    if ( '' != locate_template( 'home.php' ) ) {
         // 'home.php' found in Theme, do something
    }
    

    Note that locate_template() will check both TEMPLATEPATH and STYLESHEETPATH, so it works for both a stand-alone Theme and a Child Theme.