-
Notifications
You must be signed in to change notification settings - Fork 18
Folder structure
The folders structure is defined by the means of the content in it.
The basic structure for the theme is like this :
├── assets
│ ├── acf
│ │ ├── json
│ │ └── php
│ ├── facetwp
│ └── searchwp
├── components
│ ├── acf
│ ├── blocks
│ ├── loops
│ └── parts
├── languages
└── templates
The assets folder contains all the static code for the configuration of the plugins like
- ACF
- SearchWP
- FacetWP
The goal of theses folders is to handle the .json
and .php
files needed for the configuration.
The files naming is for ACF
- JSON :
{group-slug}.json
- PHP
{group_slug}.php
The files naming for SearchWP
- JSON :
config.json
The files naming for facetWP
- JSON :
config.json
Into the components directory we add all the theme files we need, theses files are bits of code included into our theme with get_template_part
function.
The acf
folder contains everything that can be chunked into an acf component, like flexibles and blocks.
The blocks
folder contains generic parts of our code that we use accross our classic templates.
Like
-
pagenavi.php
containing the code for displaying pagenavi with function check. -
breadcrumb.php
containing the code for the breadcrumb and function check. -
related-news.php
display the last news accross all the templates
The loops
folder contains everything that is between while(have_posts()): the_post() ... endwhile
.
The name of the files have to be {post_type}.php
, so if I want to add a template for the event
post_type I will create a file like this components/loops/event.php
The parts
folder will contain all the specific parts for our theme used for one specific post_type or context.
The template names into part
is free but it's strongly recommended to create sub-folder based on context or post_type like components/parts/{post_type}/{filename}.php
components/parts/event/metadata.php
components/parts/event/header.php
components/parts/event/footer.php
If there is shared parts, so there is two solutions
- put in the
components/parts/
folder directly and create ashared
directory - move it into the blocks directory on his own folder
The templates
directory is used for the WordPress template system.
Because WordPress only scan 1 folder depth, this is not possible to add a new folder into this one.
The naming is mainly free, but it's recommended that we use the post_type first since WordPress allow custom post types templates when multiple post_types are involved there is no need to specify the post_type into the filename.
So we can have
templates/page-fullwidth.php
templates/post-iframe.php
templates/iframe.php
The language folder contains every translation, this is mandatory to have a {text-domain}.pot
file into this directory. The post file can be generated with wp-cli i18n command.
Every language translated into this directory have to be like
- {locale}.mo
- {locale}.po
The best practise is to centralize all the translations into the wp-content/languages/
directory allowing users to edit them without touching the theme itself with, for example, loco translate plugin.