Разработка проекта на Wordpress ведется в кастомной теме или плагине. Стурктура темы должна соответствовать стартовой теме Syndicode. Тема и префиксы функций должны быть переименованы согласно названию проекта. Если название проекта имеет длинное именование, допускается использование сокращения или его абревиатуры.
Имена всех файлов в проекте отображать их суть. Если в названии используется 2 слова, они должны быть разделены символом «дефис».
Имена файлов темы должны соответсвовать названиям в иерархии темы Wordpress. Файлы темы должны располагаться в ее корне.
Исходные файлы стилей, javascript, изображений и шрифтов должны находится в папке /source
. Конечные файлы для использования их в теме, должны находится в папке /assets
. Перемещение происходит в автоматическом режиме при помощи менеджера задач gulp.
Файл functions.php не должен содержать определения функций или вспомагательный код, кроме подключения файлов относящихся к теме и объявления констант.
Файлы темы для удобства и структуризации могут быть разделены на части. Файлы с частям темы должны располагаться в папке /template-parts
. Папка /template-parts
может быть разбита на подпапки.
Кастомные шаблоны страниц, отдельные шаблоны должны располагаться в папке /templates
.
Файлы не относящиеся к отображению контента, вспомогательные файлы должны располагаться в папке /inc
.
Функции которые предназначены для общего функционирования темы должны располагаться в файле /inc/template-functions.php
.
Регистрация кастомных типов записей и кастомных таксономий происходит путем добавления нового файла с объявлением в /inc/post-types
и /inc/taxonomies
соотвественно. Имена файлов кастомных типов и таксономий должны соответсвовать их названиям и быть объявленными в единственом числе.
Вспомогательные функции, которые относятся к отдельным логическим узлам, необходимо размещать в отдельных файлах в папке /utils
. Подключение этих файлов должно происходить в файле /inc/utils.php
.
При использовании вспомогательных библиотек/плагинов для создания кастомных мета полей, их объявления должны быть разделены по файлам, в зависимости от их назначения (страница, кастомный тип запси и т.д.). Файлы объявления кастомных мета полей должны быть расположены в одноименной с библиотекой/плагином подпапке в папке /inc
. Пример: /inc/carbon-fields/page-home.php
, /inc/acf/post-type-car.php
. Файлы объявления кастомных мета полей подключаются в одноименном с библиотекой/плагином файле в папке /inc
.
Имена файлов объявления кастомных мета полей, должны начинаться с сущности их предназначения. Например если поля объявляются к кастомному типу записи, то имя файла должны быть таким - post-type-event.php
.
- Если позволяет окружение проекта, должна использоваться версия php 8.1 и выше.
- Необходимо стараться минимизировать использование стороннних плагинов.
- При определении функции ее имя должно начинаться с префикса, который равен имени темы или id плагина. При использовании стартовой темы, стандартные префиксы должны быть переименованы.
Пример ❌:
function get_custom_post_type_posts() {
//...
}
Пример ✅:
function syndicode_get_custom_post_type_posts() {
//...
}
- При создании кастомной таблицы в базе данных, ее имя должно начинаться с префикса, который используется в проекте по умолчанию.
- Имена переменных должны состоять только из строчных символов, слова разделяются символом «подчеркивание». Имя переменной должно отражать суть её содержимого. Недопустимо использовать сокращенные слова в именах переменных.
Пример ❌:
$item_v = 10;
Пример ✅:
$item_value = 10;
- В файлах php которые для вывода информации используют html, должен использоваться альтернативный синтаксис управляющих структур
Пример ✅:
<?php foreach($posts as $post) : ?>
<li><?php echo $post->ID; ?></li>
<?php endforeach; ?>
- При определении функции, для аргументов функции должны быть объявлены их типы.
Пример ✅:
function syndicode_ucfirst(string $string): void {
//...
}
- При определени фукнции должен быть объвлен тип возвращаемого значения.
Пример ✅:
function syndicode_ucfirst(string $string): string {
return ucfirst( $string );
}
- Стили и скрипты должны подклбчаться только через хуки.
- Стили и скрипты для админ панели должны находиться в отдельных файлах и подклбючаться отдельно от основных файлов стилей и скриптов.