WordPress — отличная платформа, которая позволяет легко развивать функционал и решать предметные задачи.

Для этого есть механизм тем, который позволяет легко менять темы. И механизм плагинов, который позволяет добавлять различные расширения.

Очень много степеней свободы, которые зачастую приводят к ошибкам в архитектуре и решениях, которые затем обходятся дорого и усложняют изменения конечного продукта (сайта или веб-приложения).

Тут соберем список основных идей:

1. Сразу делать дочернюю тему

Это позволит в перспективе не терять настройки, и сразу быстро менять шаблоны, добавлять функционал в тему, при этом не ломая родительскую и с сохранением возможности обновления.

2. Упаковывать функционал в плагин

Часто начинающие разработчики чудят и пытаются запихнуть функции импорта данных на сайт в тему.

Это понятно, когда надо добавить в тему функции, которые точно относятся к отображению. Например шорткод, который будет выводить список постов в стилистике данной темы.

Но если функционал явно не зависим от темы и может быть даже малейшая вероятность что этот функционал нужен будет даже при смене темы, то писать его нужно как плагин.

Силен стереотип, что функционал без плагина работает быстрее и лучше. Это не правда.

3. Структурируйте файлы и папки расширения

Стоит разделить функционал на логические блоки и выделять их в отдельные файлы и папки.

Если функционал можно написать одним файлом, то пусть один. Если два файла — то делайте для них папку.

Если функция делится еще на подфункции, то можно создать папку в папке и т д.

Методика структурирования для таких вещей называется ВИСИ.

4. Пишите php в HTML, а не HTML в php

Часто программисты пишут конструкции сборки HTML шаблона через php переменные.

Пример: $var_text = ‘<div class=»row»>’;

Потому еще так: $var_text .= ‘<div class=»col-xs-4 ‘ . $var2 . ‘»>Text</div>’;

Править и читать такой код крайне тяжело.

Почти всегда есть возможность перевернуть функцию и писать HTML, а внутри уже php конструкции типа <?php echo $var2 ?>

Сложность иногда возникает, когда надо результат функции вернуть (return $var_text). В этом случае стоит использовать механизм ob_start.