Інформація про тему
Остання актуальна версія стартової теми завжди доступна за посиланням
Як інсталювати тему на Local WP можна подивитися тут
Налаштування серверу можна подивитись тут
Структура папок
-
frontend/assets/– css, js, зображення, js бібліотеки, шрифти...-
backend/- якщо BE розробнику необхідні свої стилі (поза стандартною збіркою)-
css/ -
js/
-
-
css/ -
images/ -
js/ -
libs/ -
fonts/
-
-
acf-blocks– Папка зi згенерованими ACF блоками -
acf-options– Папка зi згенерованими ACF сторінками опцій -
acf-pages– Папка зi згенерованими page templates та ACF полями -
includes– основний функціонал теми-
config– конфігурація теми-
config.php– конфігураційний масив з усіма налаштуваннями теми -
styles-and-script.php– підключення стилів і скриптов
-
-
core- ядро теми-
setup-theme.php– встановлення теми -
functions.php– функції ядра та ajax обробники -
GENERAL_CLI.php– WP CLI команди для теми -
security.php– безпекові заходи
-
-
modules– модулі (наприклад налаштування пошуку, шорткоди чи змiна структури меню) -
acf.php– зміна функціональності плагіну ACF Pro -
helpers.php– допоміжні функції
-
-
template-parts -
404.php -
footer.php -
functions.php -
header.php -
index.php -
page.php -
screenshot.png -
search.php -
single.php -
style.css
WP CLI команди для роботи з темою
Створення acf блоків для гутенберг (add_block)
Приклад
wp general add_block "Hero" --fields="Title test",description:textarea,list:repeater[text,descr:textarea],checklist:checkbox[first,last],bg:image,sel:select[A,B,C]
Структура папок
-
acf-blocks-
назва-блоку-
index.php- Шаблон блоку (створюється автоматично) -
preview.jpg- прев'ю блоку (яке відображається в редакторі Gutenberg). Приблизна ширина посадкового місця прев'ю 450px -
block.json- структура блоку
-
-
Приклад файлу block.json
{
"name": "acf/Назва-блоку",
"title": "Назва блоку",
"description": "Опис блоку",
"version": "1.0.0",
"category": "sections",
"icon": "admin-page",
"example": {
"attributes": {
"mode": "preview",
"data": { "preview": true }
}
},
"acf": {
"mode": "edit",
"postTypes": ["page","post"],
"renderTemplate": "index.php"
},
"custom_scripts": [ "/js/{FileName}.min.js" ],
"custom_styles": [ "/css/{FileName}.min.css" ]
}
Custom recourses
custom_scripts та custom_styles можна використовувати для тих випадків, коли стилі і скрипти вставляються тільки за наявності блоку (секції) на сторiнцi.
Коренева папки скриптів і стилів frontend/assets
Створення сторінок з шаблоном і ACF полями (add_page)
Приклад
wp general add_page "Contact us" --fields=title,description:textarea
Опис
Буде створений шаблон, сама сторінка з назначеним цим шаблоном, створені ACF поля для цієї сторінки та підключений код ACF до цього темплейту.
Структура папок
-
acf-pages-
Назва сторінки-
template.php- Шаблон сторінки -
index.php- Додаткові поля сторінки
-
-
ACF поля для add_page, add_option, add_block
Атрибути
--fields
Формат
Назва-поля:Тип-поля (якщо тип поля не вказаний то тип поля ставиться text, якщо назва поля складається з більш ніж одного слова то воно обромляється подвійними лапками)
Типи полів
textarea - Текстове поле
editor - Текстове поле
email - Email
link - Link
repeater[тут так само описуються поля]
checkbox[A,B,C] - де A B C - список
radio[A,B,C] - де A B C - список
select[A,B,C] - де A B C - option
image - Зображення
true_false - True-false чекбокс
Деякi особливостi
Створення власних Post Types та Taxonomies
Зі стартової тем було повністю видалено функціонал генерації власних Post Types\Taxonomies. Тепер весь цей функціонал необхідно робити за допомогою ACF. З плюсів:
-
створення в "пару кліків"
-
доступність усіх необхідних налаштувань
-
синхронізація через функціональність ACF json
Створення сторінок ACF опцій
Зі стартової тем було повністю видалено функціонал генерації сторінок ACF опцій. Тепер весь цей функціонал необхідно робити за допомогою ACF. З плюсів:
-
створення в "пару кліків"
-
доступність усіх необхідних налаштувань
-
синхронізація через функціональність ACF json
Для зручності в admin bar було додано веидення поточних сторінок (зі збереженням ієрархії)
ACF блоки
Під час генерації ACF блоку необхідно в файлi block.json вказати йому зрозумілу назву, зрозумілий опис і завантажити прев'ю (в ідеальному випадку було б чудово і ще вказати відповідну іконку).
Назва ACF блоку
Неймінг (“title” у файлі block.json) блоків обговорюється з Вашим PM під конкретний проект. Враховується специфіка проекту, побажання замовника, його обізнаність у роботі WP та інші фактори. В ідеалі назва блоку має вже фігурувати в оцінці проекту, технічному завданні, дизайні.
Опис ACF блоку
Опис (description у файлі block.json) блоків обговорюється з Вашим PM під конкретний проект. Додавати опис необхідно в тому разі, якщо це було зазначено PM проекту в завданні під поточний блок.
Превью блока
Детальніше можна ознайомитися тут
Додавання SVG іконок
Якщо необхідно вставити svg іконку, яка не потребує редагування із адміністративної частини сайту, то необхідно вивести шаблон:
template-parts/partials/social-icons.php
Наприклад для іконки search.svg
get_template_part('template-parts/partials/sprite', 'icon', [ 'icon' => 'search' ]);
В цьому випадку скрипт підвантажить зібраний sprite.svg
<svg class="icon icon_search"> <use href="../wp-content/themes/general/frontend/assets/icons/sprite.svg?v=1.0#search"></use> </svg>
Якщо необіходно дадати можливість вибору іконки в адміністративній частині файлу (як показує практика - для роботи з полями типу repeater):
-
Обов'язково створити поле під назвою
theme_iconsі вибрати тип select, checkbox або radio -
В цьому випадку спрацює метод
che_acf_load_field_theme_iconsіз файлу includes/acf.php -
Для значень цього поля (choises) автоматично підтягнуться усі існуючі іконки *.svg із папки
frontend/src/icons/, після чього можно буде вибрати необхідну іконку. Якщо будуть додані нові іконки, то вони також покажуться у списку значень.
Для зручності і наглядності підвантажуються самі іконки для всіх типів полів
Робота із зображеннями
При роботі із зображеннями може виникнути необхідність додати проміжні розміри зображень для різних брейкпоінтів - розмірів екрану. Наприклад, на великих екранах у вас є 4 зображення в ряд, розміром 300x300px, а на мобільній версії вони перебудовуються в колонку і зображення розтягується на 100%. В цьому випадку, якщо ви явно вказали розмір ['300', ‘300’] - ви отримаєте зображення поганої якості на екранах більшої роздільної здатності, ніж розмір зображення.
Аби цього уникнути, можна використати параметр ['custom_srcset'] де через крапку з комою вказати бажані розміри зображень для різних розмірів екрану. У цьому випадку WordPress згенерує зображення за вашими розмірами і обиратиме для завантаження оптимальне з наявних.
Наприклад
echo wp_get_attachment_image($image['ID'], [300, 300], false, ['custom_srcset' => '750,700;550,500']
functions.php
Редагувати файл functions.php дозволяється тільки у 2х випадках:
Додавання своїх констант
define( 'MY_CONSTANT', 'MY_CONSTANT_VALUE' );
Підключення *.php файлів. Файли, які підключаються, мають бути "спеціалізованими", наприклад:
-
для модифікації функціоналу WooCommerce
-
створення завантажувача CSV-файлів на сторінці налаштувань
require_once THEME_MODULES_DIR . '/woo-customize.php'; require_once THEME_MODULES_DIR . '/csv-loader.php';
wp-config.php
Для перевірок робочого оточення необхідно використовувати функцію wp_get_environment_type:
-
Для локального сайту Local WP автоматично проставляє значення local
-
Для stage сайту автоматично встановиться значення staging
-
Для production сайту необхідно буде вручну вказати значення production
Подалi виключаємо використання подібного функціоналу:
$is_local = strpos( $server_name, 'local' ) !== false; $is_cheapgroup = strpos( $server_name, 'cheitgroup' ) !== false;
Покращення теми
Якщо у Вас є ідея як можна поліпшити\оптимізувати тему, то Ви можете запропонувати це наступним чином:
-
Склонувати проект (або оновити до актуального стану поточний)
-
З гілки
stageстворити нову гілку (назва гілки - короткий опис поліпшення, наприкладchange-block-preview) -
Зробити коміт та опублікувати гілку
-
Створити merge request у гілку
stageта додати інформацію в поле Description (якщо це необхiдно) -
Якщо код пройде рев'ю Тех\Тим Лідом, Ваш merge request буде схвалено. Пiсля цього покращення буде автоматично опубліковано в архіві теми






Leave a Reply
You must be logged in to post a comment.