-
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
└── templatesThe 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 acffolder 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.phpcontaining the code for displaying pagenavi with function check. -
breadcrumb.phpcontaining the code for the breadcrumb and function check. -
related-news.phpdisplay 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.phpcomponents/parts/event/header.phpcomponents/parts/event/footer.php
If there is shared parts, so there is two solutions
- put in the
components/parts/folder directly and create ashareddirectory - 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.phptemplates/post-iframe.phptemplates/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.