1

Тема: Прискорення розробки сайтів на базі CMS Wordpress

Вітаю усіх. Можливо зацікавить моя стаття, яку я написав після переходу з CMF Drupal на CMS Wordpress, і багатьох спроб без змін ядра зберігши всю легкість системи Wordpress злегка перетворити її на гнучнку подібність до Drupal.

При щоденній роботі із системою управління контентом (надалі CMS) WordPress, найчастіше, все зводиться до створення теми за авторським дизайном, що був попередньо погоджений із замовником.
При розробці одного-декількох сайтів можна обійтись звичайним синтаксисом керуючих php-вставок, на кшталт <?php echo $some_variable; ?> та більш складнішою логікою виводу html-вмісту. Але, з часом постає проблема прискорення розробки, фактично, тих самих тем (themes) для різних сайтів, як простих, так і зі складною логікою.
Нижче наводиться декілька ресурсів та технологій, що дозволять суттєво прискорити процес розробки, та сконцентруватись більше на самій розробці, аніж на підготовчих деталях.

Ресурс WP Hierarchy [https://wphierarchy.com/]

Найпершою та найбільш часто використовуваною шпаргалкою, можна назвати вищеназваний ресурс WP Hierarchy.
При переході на нього, можна у зручному, ієрархічному вигляді отримати інформацію про стандартні імена шаблонів тієї чи іншої частини основного компоненту системи WordPress, а саме – механізму тем.

Модуль Custom Post Type UI [https://uk.wordpress.org/plugins/custom-post-type-ui/]

Цей модуль дозволить вам забути про ручне створення нових типів матеріалів через системний файл теми functions.php, і у більш-менш зручному інтерфейсі за допомогою заповнення декількох полів створити довільний тип матеріалу, а також додати до нього підтримку вбудованих можливостей самої системи WordPress, на кшталт прикріпленого зображення (featured image), короткої цитати (excerpt) та багатьох інших.
Варто зазначити, що альтернативою цього модуля є Toolset Types [https://wp-types.com/home/types-manage- … om-fields/], який більше сподобається Drupal-розробникам. В переваги цього модуля входять – більш зручний інтерфейс для створення типів матеріалів та таксономій, а також підтримка автоматичних представлень матеріалів (Views), що є адаптацією Drupal-модуля Views. Мінусом цього плагіна є те, що віднедавна він став повністю платним, що ускладнює роботу з ним для розробників, які не мають постійного потоку WordPress-проектів.

Модуль Advanced Custom Fields (ACF) [https://www.advancedcustomfields.com/]

ACF є чудовою альтернативою, та одночасно, доповненням до попередніх плагінів. Він надає можливість створювати великі масиви додаткових полів та прив’язувати їх до довільного типу матеріалу, таксономії, профілю користувача, а також контролювати доступ до редагування полів за допомогою зручного, вбудованого конструктора логіки перевірки прав доступу. Також, є можливість для груп полів обирати формати виводу у вигляді рядків або таблиць, а також групувати поля згідно тематики у спеціальних вкладках.
Важливим додатком є платне доповнення до плагіну ACF: Repeater [https://www.advancedcustomfields.com/ad … ter-field/], який можна придбати за 25$. Цей додаток дає надзвичайно зручну перевагу по створенню груп полів, що повторюються.

Для максимального прискорення процесу розробки до плагіну Advanced Custom Fields (ACF) дуже влучно підійде не менш цікавий, та корисний проект Timber, який розроблює одноіменний плагін для CMS WordPress.

Timber [https://www.upstatement.com/timber/] привносить не менш зручну можливість перетворити CMS WordPress на подобу HMVC фреймворка, використовуючи Timber API [https://timber.github.io/docs/reference/] та всю потужність механізму шаблонізації Twig (Wiki [https://uk.wikipedia.org/wiki/Twig]). При цьому стандартні php-шаблони механізму темізації CMS WordPress перетворюються у подобу HMVC-контролерів для збору і рендерингу інформації у спеціальних twig-шаблонах, а вся верстка переноситься у представлення з чистим HTML кодом та мінімальними керуючими Twig-вставками у окремі файли з розширенням *.twig
У комбінації із плагіном Advanced Custom Fields, такий метод розробки значно збільшує якість та швидкість розробки проектів на CMS WordPress довільної складності.

Нижче наводиться приклад використання комбінації плагінів ACF + Timber, який дозволяє автоматично збирати поля прив’язані до WordPress-запису, та виводити їх за допомогою керуючих Twig-вставок.

<?php
use Timber\Timber;

$context = Timber::get_context();
$fields = array(
  ‘acf_field_1’,
  ‘acf_field_2’,
  ‘another_acf_field’
);
$data = new stdClass();
foreach($fields as $field) {
  $data->$field = get_field($field, 10);
}

$context[‘data’] = $data;
get_header();
Timber::render(‘views/home.twig’, $context);
get_footer();
Подякували: ostap34PHP1