Bird
Raised Fist0
Wordpressframework~10 mins

Template hierarchy in Wordpress - Interactive Code Practice

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to load the main template file in WordPress.

Wordpress
get_template_part('[1]');
Drag options to blanks, or click blank then click option'
Aheader
Bindex
Cfooter
Dsidebar
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'header' or 'footer' instead of 'index' loads other template parts, not the main one.
Forgetting to pass the template name as a string.
2fill in blank
medium

Complete the code to load the template for a single post in WordPress.

Wordpress
get_template_part('[1]');
Drag options to blanks, or click blank then click option'
Asingle
Bpage
Carchive
Dsearch
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'page' loads the page template, not single posts.
Using 'archive' loads archive pages, not single posts.
3fill in blank
hard

Fix the error in the code to load the category template correctly.

Wordpress
get_template_part('[1]');
Drag options to blanks, or click blank then click option'
Acategory
Bcategories
Ccat
Darchive-category
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'categories' or 'cat' which do not match the template file name.
Using 'archive-category' which is not a standard template part.
4fill in blank
hard

Fill both blanks to create a conditional that loads the author template only on author archive pages.

Wordpress
if (is_[1]()) {
  get_template_part('[2]');
}
Drag options to blanks, or click blank then click option'
Aauthor
Barchive
Dsingle
Attempts:
3 left
💡 Hint
Common Mistakes
Using is_archive() which is more general and not specific to authors.
Loading the wrong template part like 'single' instead of 'author'.
5fill in blank
hard

Fill all three blanks to create a custom loop that loads the content template only for posts in the 'news' category.

Wordpress
if (have_posts()) {
  while (have_posts()) {
    the_post();
    if (in_category('[1]')) {
      get_template_part('[2]', '[3]');
    }
  }
}
Drag options to blanks, or click blank then click option'
Anews
Bcontent
Dsingle
Attempts:
3 left
💡 Hint
Common Mistakes
Using the wrong category slug or template part names.
Not passing the second argument to get_template_part for variations.

Practice

(1/5)
1. Which template file does WordPress use first when displaying a single blog post?
easy
A. archive.php
B. page.php
C. index.php
D. single-{post-type}.php

Solution

  1. Step 1: Understand single post template priority

    WordPress first looks for single-{post-type}.php to display a single post of a custom or default post type.
  2. Step 2: Recognize fallback templates

    If that file is missing, WordPress falls back to single.php or index.php, but the first choice is single-{post-type}.php.
  3. Final Answer:

    single-{post-type}.php -> Option D
  4. Quick Check:

    Single post uses single-{post-type}.php first [OK]
Hint: Single posts use single-{post-type}.php first [OK]
Common Mistakes:
  • Confusing page.php with single post template
  • Thinking archive.php is for single posts
  • Assuming index.php is always used first
2. Which of the following is the correct template file name to display a category archive for category with slug 'news'?
easy
A. news.php
B. category-news.php
C. category.php
D. archive-news.php

Solution

  1. Step 1: Identify category archive template naming

    WordPress uses category-{slug}.php to display a specific category archive page.
  2. Step 2: Match slug to template

    For category slug 'news', the template file is category-news.php.
  3. Final Answer:

    category-news.php -> Option B
  4. Quick Check:

    Category archives use category-{slug}.php [OK]
Hint: Category archives use category-{slug}.php [OK]
Common Mistakes:
  • Using archive-news.php which is invalid
  • Confusing category.php as specific slug template
  • Naming file as news.php which is not recognized
3. Given the following files in a theme: page-about.php, page.php, and index.php. Which template will WordPress use to display the About page?
medium
A. page-about.php
B. page.php
C. index.php
D. It will show a 404 error

Solution

  1. Step 1: Check for page-specific template

    WordPress looks for page-{slug}.php first for pages, so page-about.php matches the About page slug.
  2. Step 2: Understand fallback order

    If page-about.php exists, WordPress uses it before falling back to page.php or index.php.
  3. Final Answer:

    page-about.php -> Option A
  4. Quick Check:

    Page slug template overrides generic page.php [OK]
Hint: Page slug templates like page-about.php have priority [OK]
Common Mistakes:
  • Choosing page.php ignoring slug-specific template
  • Assuming index.php is used first
  • Thinking About page shows 404 without template
4. You created a template file named single-post.php but WordPress still uses single.php to display posts. What is the likely problem?
medium
A. The file name should be single-post.php but WordPress uses single-{post-type}.php where {post-type} is the actual post type slug
B. The correct file name is single-post.php but it must be in a subfolder
C. The file should be named single.php for posts
D. WordPress does not support single-post.php templates

Solution

  1. Step 1: Understand post type template naming

    WordPress uses single-{post-type}.php where {post-type} matches the post type slug exactly.
  2. Step 2: Check post type slug for 'post'

    The default post type slug is 'post', so single-post.php is correct if the post type is 'post'. But if the post type is custom or named differently, the file name must match exactly.
  3. Step 3: Identify common mistake

    If WordPress ignores single-post.php, it may be because the post type slug is not 'post' or the file is misplaced.
  4. Final Answer:

    File name must match actual post type slug in single-{post-type}.php -> Option A
  5. Quick Check:

    Template file must match post type slug exactly [OK]
Hint: Match single-{post-type}.php exactly to post type slug [OK]
Common Mistakes:
  • Assuming single-post.php always works for posts
  • Thinking file must be in a subfolder
  • Believing WordPress ignores single-{post-type}.php files
5. You want to create a custom template for the tag archive page of the tag with slug 'featured'. Which template file name should you create to follow WordPress template hierarchy?
hard
A. archive-featured.php
B. tag.php
C. tag-featured.php
D. taxonomy-featured.php

Solution

  1. Step 1: Identify tag archive template naming

    WordPress uses tag-{slug}.php for tag archive pages with specific slugs.
  2. Step 2: Match slug to template file

    For the tag slug 'featured', the correct template file is tag-featured.php.
  3. Step 3: Understand fallback templates

    If tag-featured.php is missing, WordPress falls back to tag.php or archive.php.
  4. Final Answer:

    tag-featured.php -> Option C
  5. Quick Check:

    Tag archives use tag-{slug}.php [OK]
Hint: Tag archives use tag-{slug}.php for custom tags [OK]
Common Mistakes:
  • Using archive-featured.php which is invalid
  • Confusing taxonomy-featured.php with tag template
  • Assuming tag.php is always used for all tags