WordPress 4.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.0
11          */
12         do_action( 'template_redirect' );
13
14 /**
15  * Filters 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_embed()          && $template = get_embed_template()          ) :
47         elseif ( is_404()            && $template = get_404_template()            ) :
48         elseif ( is_search()         && $template = get_search_template()         ) :
49         elseif ( is_front_page()     && $template = get_front_page_template()     ) :
50         elseif ( is_home()           && $template = get_home_template()           ) :
51         elseif ( is_post_type_archive() && $template = get_post_type_archive_template() ) :
52         elseif ( is_tax()            && $template = get_taxonomy_template()       ) :
53         elseif ( is_attachment()     && $template = get_attachment_template()     ) :
54                 remove_filter('the_content', 'prepend_attachment');
55         elseif ( is_single()         && $template = get_single_template()         ) :
56         elseif ( is_page()           && $template = get_page_template()           ) :
57         elseif ( is_singular()       && $template = get_singular_template()       ) :
58         elseif ( is_category()       && $template = get_category_template()       ) :
59         elseif ( is_tag()            && $template = get_tag_template()            ) :
60         elseif ( is_author()         && $template = get_author_template()         ) :
61         elseif ( is_date()           && $template = get_date_template()           ) :
62         elseif ( is_archive()        && $template = get_archive_template()        ) :
63         else :
64                 $template = get_index_template();
65         endif;
66         /**
67          * Filters 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         } elseif ( current_user_can( 'switch_themes' ) ) {
76                 $theme = wp_get_theme();
77                 if ( $theme->errors() ) {
78                         wp_die( $theme->errors() );
79                 }
80         }
81         return;
82 endif;