wp/wp-includes/template-loader.php
changeset 0 d970ebf37754
child 5 5e2f62d02dcd
equal deleted inserted replaced
-1:000000000000 0:d970ebf37754
       
     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;