• Resolved tomitnh

    (@tomitnh)


    Hi guys,

    Sorry if this post is in the wrong section, I tried to post it to WP-Advance but don’t have the permission.

    I just started working with WordPress and am digging into the core code to see how WordPress generate a website starting with the HTTP request. I traced the process to the template-loader.php and have trouble understanding a block of code (attached below) that lack comments. Could someone explain how templates are being loaded here? Is it checking for valid templates?

    Thanks,
    Tom

    if ( defined('WP_USE_THEMES') && WP_USE_THEMES ) :
    	$template = false;
    	if     ( is_404()            && $template = get_404_template()            ) :
    	elseif ( is_search()         && $template = get_search_template()         ) :
    	elseif ( is_front_page()     && $template = get_front_page_template()     ) :
    	elseif ( is_home()           && $template = get_home_template()           ) :
    	elseif ( is_post_type_archive() && $template = get_post_type_archive_template() ) :
    	elseif ( is_tax()            && $template = get_taxonomy_template()       ) :
    	elseif ( is_attachment()     && $template = get_attachment_template()     ) :
    		remove_filter('the_content', 'prepend_attachment');
    	elseif ( is_single()         && $template = get_single_template()         ) :
    	elseif ( is_page()           && $template = get_page_template()           ) :
    	elseif ( is_category()       && $template = get_category_template()       ) :
    	elseif ( is_tag()            && $template = get_tag_template()            ) :
    	elseif ( is_author()         && $template = get_author_template()         ) :
    	elseif ( is_date()           && $template = get_date_template()           ) :
    	elseif ( is_archive()        && $template = get_archive_template()        ) :
    	elseif ( is_comments_popup() && $template = get_comments_popup_template() ) :
    	elseif ( is_paged()          && $template = get_paged_template()          ) :
    	else :
    		$template = get_index_template();
    	endif;
    	/**
    	 * Filter the path of the current template before including it.
    	 *
    	 * @since 3.0.0
    	 *
    	 * @param string $template The path of the template to include.
    	 */
    	if ( $template = apply_filters( 'template_include', $template ) )
    		include( $template );
    	return;
    endif;
Viewing 2 replies - 1 through 2 (of 2 total)
  • That piece of code is determining which .php file it should include as request’s endpoint in its execution.

    For example, if the condition is_home() is met (= you are on the blog’s homepage), the local variable $template is assigned a path to either home.php or index.php with the help of the function get_home_template() (inspect that function for better understanding).

    Finally, it calls all filters attached into template_include filter hook in case you want to override its default behavior from a plugin or a theme.

    Disclaimer: I might have got some bits of explanation wrong, correct me please if so.

    Thread Starter tomitnh

    (@tomitnh)

    Ok that make sense. I was confused with the massive if, elseif, else structure. Thanks!

Viewing 2 replies - 1 through 2 (of 2 total)
  • The topic ‘Understanding template-loader.php get_*_templates()’ is closed to new replies.