Як фреймворки працюють насправді

Фреймворки можуть бути досить потужними. Для початківців користувачів WordPress, вони роблять можливим створення унікального сайту, який виглядає, немов, це виконано на замовлення, і для розробників WordPress, вони можуть помоч застосовувати принцип DRY (Do not Repeat Yourself - не повторювати) і нададуть вам можливість швидко створювати призначені для користувача сайти.

Якщо ви вже, якийсь час, користувалися стороннім фреймворком і були розчаровані роздутим кодом і відсутністю гнучкості, або ви просто хочете мати повний контроль над вашим кодом, тоді створення власного фреймворка може бути кращим підходом.

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

Але для початку, вам потрібно знати, як фреймворки працюють і чим відрізняються від звичайної батьківської теми.

  • Він складається з батьківської теми призначеної для використання з дочірніми темами. У деяких випадках батьківська тема також може бути незалежною, але в інших випадках батьківська тема працює в поєднанні з дочірньою темою - WordPress Codex визначає їх як 'Base / Starter Themes' і 'Code Libraries'.
  • Він включає хукі і функції які можуть бути керованими дочірніми темами і плагінами. Ваш фреймворк є основою цілої екосистеми з якою ви будете працювати, і яка включає плагіни які будуть закріплені в вашому фреймворку.
  • Якщо він розроблений для користувачів - Ні-розробників, то він буде включати параметри теми, які дозволяють, їм, налаштовувати тему згідно їх потреб. Фреймворки можуть бути великими, включаючи дизайн, макет, функції, контент і багато іншого. У деяких випадках, функціональність може бути надана за допомогою відладчика тем.
  • Він може містити безліч областей віджетів, щоб користувачі могли навіть без знань коду додавати контент на сторінку (включаючи віджети додані вашими плагінами).
  • Він може також включати функціональність деяких бібліотек, наприклад слайдери jQuery або лайтбокси. Залежачи від ваших і ваших користувачів потреб, ви можете додавати їх в ваш фреймворк, або просто включити деякі плагіни в нього.
  • Він є розширюваним. Дозволяючи розширювати себе через дочірні теми і плагіни.

Перші два з перерахованих пунктів є самими основними - без батьківської теми, у вас немає фреймворка. А батьківська тема без функцій і хуков, просто основна батьківська тема, чи не фреймворк.

Ось що фреймворки з себе представляють, але як вони працюють? Давайте поглянемо на елементи фреймворка:

  • Батьківська і дочірня теми
  • Хукі (action і filter)
  • функції
  • налаштування теми
  • віджети
  • скрипти
  • Можливість розширення

Батьківські і дочірні теми

Основний компонент фреймворка це батьківська тема. Вона може бути створена в одному з двох напрямків:

  • Як початкова тема, яка може працювати сама по собі, і може змінюватися в настройках або через настроювач. Ось пара прикладів Atahualpa і Thematic. Вони можуть бути використані як самостійні теми без використання дочірніх.
  • В якості основи для дочірньої теми, без якої, тема не буде ефективно підтримувати сайт. Ось приклади Hybrid Core і Genesis. Вона буде включати основний код, який ви зазвичай можете знайти серед хуков і функцій, які можуть бути використані вашої дочірньої темою, а також і плагінами. Все це містить API для фреймворка.

Як одна з ключових характеристик фреймворка, це принцип DRY, ваша батьківська тема, скоріше за все, використовує частини шаблонів і містить файли, де це можливо, тобто ви можете отримати доступ, до одного і того ж, коду в декількох місцях вашої теми. Він також робить простіше запис коду в вашій дочірньої темі, ви просто створюєте замінює шаблон або додаєте файл.

Я не буду пояснювати концепцію батьківських і дочірніх тим, це все описано в цій статті керівництво по дочірнім темам. Багато фреймворків випускаються з дочірніми темами для їх підтримки, в той час як з іншими, ви створюєте свої власні теми.

Якщо ви розробляєте свою власну тему, я можу рекомендувати вам зробити, принаймні, одну початкову, дочірню тему, щоб уникнути повторень її установки для кожного проекту. Ви можете створити кілька дочірніх тим, як основи, для різних типів проектів, наприклад, дочірня тема для блогу.

Хукі (action and filter)

Фреймворки міститимуть різні хукі для дочірніх тим і плагінів, щоб вклинитися при додаванні користувача коду або зміни поведінки теми:

  • Екшн хукі будуть з'являтися в різних місцях коду, дозволяючи вам додавати код до файлів шаблонів за допомогою функцій, закодованих у фреймворку, які можуть бути перевизначені дочірніми темами, або через функції, які ви додали вашим дочірнім темам або плагинам. Мій власний фреймворк широко використовує стрілялки хукі, даючи доступ до них у всіх файлів шаблонів, дозволяючи користувачам переглядати контент, такий як області віджетів, контактні дані, кнопки дій і конкретні ділянки коду.
  • Фільтр хукі можуть бути використані для зміни того, як сайт використовує дочірню тему, або зміна поведінки певних плагінів, для прикладу, настройка циклів, внесення змін в статичний контент і багато ще. Деякий статичний контент (або код викликається зовні вашого сайту) повинен бути загорнутий в фільтр, щоб він міг змінюватися дочірніми темами якщо це буде потрібно.

Варто деякий час подумати про те які хукі ви хочете додати на ранніх стадіях, щоб ви знали який контент додається за допомогою хуков і, безпосередньо, який код писати в ваших шаблонах. Ви розглянете це в наступній частині цієї серії.

Ваш фреймвор, ймовірно, включає в себе цілий ряд функцій. Деякі з них будуть викликатися в хуках, які, ви вже визначили, в той час як інші будуть функціями ваших шаблонів, якими можуть скористатися дочірні теми.

Якщо у вас є якісь функції, які ви використовуєте на декількох клієнтських сайтах, то буде непогано додати їх в ваш фреймворк. Вам не потрібно активувати всі з ваших функцій, ви можете активувати їх з батьківської теми, використовуючи функцію add_action () у вашій дочірньої темі.

параметри теми

Вікна параметрів є корисним доповненням для будь-якої складно-складеної теми, але вони будуть особливо корисними для фреймворків створених для користувачів без знань коду. Більшість фреймворків включають кілька вікон параметрів в режимі редагування, з опціями для включення і виключення доповнень, внесень змін до макет, додавання контенту і зміни дизайну елементів, таких як кольори, фон, шрифти і логотип.

Ви можете вибрати, використання налагоджувальника тим, для багатьох ваших опцій, він має перевагу, дозволяючи користувачам бачити зміни, як тільки вони їх виробляють. Я застосував це підхід, для фреймворка Edupress. який я розробив, для шкільних сайтів, з Марком Вілкінсон (Mark Wilkinson).

області віджетів

Рішення про додавання віджетів буде залежати від аудиторії, яка буде експлуатувати ваш фреймворк: якщо тільки ви або маленька команда буде працювати з темою, то ви можливо не будете додавати додаткові області віджетів, наприклад, вище вашого сайдбара або, нижче футера.

Але якщо ваш фреймворк буде експлуатуватися НЕ-розробниками, то ви можете дати їм більше гнучкості в поводженні з фреймворком, додавши кілька додаткових віджетів. Ви можете зареєструвати їх в хедері, до і після контенту і нижче футера.

Фреймворк, який я використовую для мої клієнтських сайтів включає 4 області віджету в футере: тема перевіряє, які з них більш заповнені і додає класи CSS, згідно контенту віджетів, і займає відповідну ширину сторінки.

Ваші області віджетів можуть бути закодовані прямо в ваших файлах шаблону або ви можливо вирішите (як я) додати з через екшн хукі у відповідних місцях вашого сайту. Це означає що вони можуть бути перевизначення в дочірніх темах, або додатковими віджетами, або призначеним для користувача кодом.

Якщо дана тема, ймовірно, буде використовуватися на декількох сайтах, побудованих вашим фреймворком, або ваші користувачі не будуть володіти кодом і ви захочете надати додаткові опції, то ви, можливо, вирішуєте додати певні скрипти в ваш фреймворк, такі як Сладера або лайтбокс. Це може застерегти користувачів від установки додаткових плагінів, але має недоліки від роздутість коду, якщо вони не потрібні.

Знову ж таки, це буде залежати від потреб вашої аудиторії і її передбачуваних потребах. Якщо це тільки ви працюєте з фреймворком, то я рекомендував би, розробляти (або ідентифікувати) плагіни з цими скриптами і використовувати їх коли вам вони потрібні.

Якщо ви додаєте скрипти, то подбайте про опції активації і деактивації, у головному вікні.

Можливість розширення

Якщо ви робите ваш фреймворк для кількох сайтів, то ви захочете, щоб він був розширюваним. Батьківська тема формує ядро ​​фреймворка, вона є серцем екосистеми, яку ви і ваші користувачі будуть задіяти для додавання екстра опцій і можливостей для сайтів. Це включає:

  • Дочірні або початкові теми - їх список може вирости з часом, особливо якщо ви випускаєте вашу тему для загального користування
  • Модулі, призначені спеціально для роботи з вашим фреймворком, часто активуються через спеціальні хукі.

Він також може включати документацію для інших розробників, які бажають працювати з вашим фреймворком: більшість фреймворків випускаються з великою документацією, яку розробники можуть використовувати або для кастомізації сайтів побудованих на цьому фреймворку, або для створення дочірніх тим або плагінів для інших користувачів.

Фреймворки є потужним інструментів в арсеналі WordPress розробників. Як ми бачили, вони грають важливу роль для користувачів, без знань коду, які використовують їх для створення своїх сайтів. Але вони також є хорошою річчю для розробників, які будуть створювати різні сторінки, для себе або для клієнтів.

Фреймворки мають кілька характеристик, які мають можливості: Вони розширюються та гнучкі, і роблять простіше створення призначених для користувача сайтів, використовуючи дочірні теми і маючи доступ до функцій і хукам, що надаються вашим фреймворком.

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

Схожі статті