Organizing Theme Files

While WordPress themes technically only require two files (index.php and style.css), they usually are made up of many files. That means they can quickly become disorganized! This section will show you how to keep your files organized.

Note: Themes without header.php and footer.php, with no alternative available, have been deprecated since WordPress 3.0. Your theme may need to include these files as well.

Theme folder and file structure Theme folder and file structure

As mentioned previously, the default Twenty themes are some of the best examples of good theme development. For instance, here is how the Twenty Seventeen Theme organizes its file structure:

assets (dir)
      - css (dir)
      - images (dir)
      - js (dir)
inc (dir)
template-parts (dir)
      - footer (dir)
      - header (dir)
      - navigation (dir)
      - page (dir)
      - post (dir)
404.php
archive.php
comments.php
footer.php
front-page.php
functions.php
header.php
index.php
page.php
README.txt
rtl.css
screenshot.png
search.php
searchform.php
sidebar.php
single.php
style.css

You can see that the main theme template files are in the root directory, while JavaScript, CSS, images are placed in assets directory, template-parts are placed in under respective subdirectory of template-parts and collection of  functions related to core functionalities are placed in inc directory.

At this time there are no required folders within a WordPress theme. However, WordPress does recognize the following folders by default.

Note: style.css should reside in the root directory of your theme not within the CSS directory.

Languages folder Languages folder

It’s best practice to internationalize your theme so it can be translated into other languages. Default themes include the languages folder, which contains a .pot file for translation and any translated .mo files. While languages is the default name of this folder, you can change the name. If you do so, you must update load_theme_textdomain().