Wordpress 3.7
[autoinstalls/wordpress.git] / wp-includes / template-loader.php
1 <?php
2 /**
3  * Loads the correct template based on the visitor's url
4  * @package WordPress
5  */
6 if ( defined('WP_USE_THEMES') && WP_USE_THEMES )
7         /**
8          * Fires before determining which template to load.
9          *
10          * @since 1.5.2
11          */
12         do_action( 'template_redirect' );
13
14 /**
15  * Filter whether to allow 'HEAD' requests to generate content.
16  *
17  * Provides a significant performance bump by exiting before the page
18  * content loads for 'HEAD' requests. See #14348.
19  *
20  * @since 3.5.0
21  *
22  * @param bool $exit Whether to exit without generating any content for 'HEAD' requests. Default true.
23  */
24 if ( 'HEAD' === $_SERVER['REQUEST_METHOD'] && apply_filters( 'exit_on_http_head', true ) )
25         exit();
26
27 // Process feeds and trackbacks even if not using themes.
28 if ( is_robots() ) :
29         /**
30          * Fired when the template loader determines a robots.txt request.
31          *
32          * @since 2.1.0
33          */
34         do_action( 'do_robots' );
35         return;
36 elseif ( is_feed() ) :
37         do_feed();
38         return;
39 elseif ( is_trackback() ) :
40         include( ABSPATH . 'wp-trackback.php' );
41         return;
42 endif;
43
44 if ( defined('WP_USE_THEMES') && WP_USE_THEMES ) :
45         $template = false;
46         if     ( is_404()            && $template = get_404_template()            ) :
47         elseif ( is_search()         && $template = get_search_template()         ) :
48         elseif ( is_front_page()     && $template = get_front_page_template()     ) :
49         elseif ( is_home()           && $template = get_home_template()           ) :
50         elseif ( is_post_type_archive() && $template = get_post_type_archive_template() ) :
51         elseif ( is_tax()            && $template = get_taxonomy_template()       ) :
52         elseif ( is_attachment()     && $template = get_attachment_template()     ) :
53                 remove_filter('the_content', 'prepend_attachment');
54         elseif ( is_single()         && $template = get_single_template()         ) :
55         elseif ( is_page()           && $template = get_page_template()           ) :
56         elseif ( is_category()       && $template = get_category_template()       ) :
57         elseif ( is_tag()            && $template = get_tag_template()            ) :
58         elseif ( is_author()         && $template = get_author_template()         ) :
59         elseif ( is_date()           && $template = get_date_template()           ) :
60         elseif ( is_archive()        && $template = get_archive_template()        ) :
61         elseif ( is_comments_popup() && $template = get_comments_popup_template() ) :
62         elseif ( is_paged()          && $template = get_paged_template()          ) :
63         else :
64                 $template = get_index_template();
65         endif;
66         /**
67          * Filter the path of the current template before including it.
68          *
69          * @since 3.0.0
70          *
71          * @param string $template The path of the template to include.
72          */
73         if ( $template = apply_filters( 'template_include', $template ) )
74                 include( $template );
75         return;
76 endif;