✅ WEB і WordPress новини, теми, плагіни. Тут ми ділимося порадами і кращими рішеннями для сайтів.

Віджети WordPress: рефакторинг, частина 7

5

У кількох останніх публікаціях ми виконали багато роботи, щоб привести код до точки рефакторингу, про яку йтиметься в цій статті.

Зокрема, ми розглянули:

Усе це зіграє свою роль у тому, що ми збираємося робити сьогодні.

Шаблон віджетів WordPress: рефакторинг, частина 7

Для тих, хто знайомий з API віджетів WordPress, ви, ймовірно, знаєте, що він не сильно змінився за останні кілька років.

Крім того, він насправді складається лише з чотирьох функцій (одна з яких є конструктором):

  1. Конструктор відповідає за налаштування кількох властивостей віджета, найчастіше його назви та опису.
  2. Функція віджета відповідає за рендеринг вмісту віджета.
  3. Функція форми відповідає за відображення форми в області адміністрування WordPress при роботі з віджетом.
  4. Функція оновлення відповідає за оновлення параметрів, які зберігаються в базі даних (або ініціалізуються, а потім зберігаються параметри, які ще не існують у базі даних).

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

Однак проблема полягає в тому, що це дуже багато роботи для одного класу.

Замість цього ми повинні розділити кожну з функцій на окрему функціональну область.

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

Те, що я збираюся представити, це те, як я зараз підходжу до цього. Це може змінитися в майбутньому, а може й ні, і інші можуть по-іншому сприйняти це.

Незважаючи на це, реалізація буде набагато більш об’єктно-орієнтованою та дасть кожному класу власний набір обов’язків.

Однак перше питання полягає в тому, як ми розділяємо клас із чотирма функціями, які успадковуються від батьківського класу?

Оновлення Bootstrap

По-перше, є кілька речей, які нам потрібно налаштувати у програмі завантаження плагіна. А саме, нам потрібно зробити наступне:

  1. створити екземпляр реєстру та зробити його доступним через проект,
  2. оновити клас плагіна, щоб він приймав реєстр і завантажував передплатників,
  3. перевірити завантажувальну програму

Ось огляд усіх трьох із зазначених вище.

1 Створіть екземпляр реєстру

Оскільки ми вже розглядали це раніше в серії, має бути зрозуміло, як це зробити.

Спочатку перегляньте наступний код :

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

2 Оновіть клас плагіна

Далі нам потрібно оновити основний клас плагіна (який знаходиться в  каталозі src ), щоб він посилався на реєстр і завантажував усіх зареєстрованих передплатників :

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

Однак нам потрібно додати функцію – навіть якщо вона тимчасова – щоб ми могли додати класи, які не є явними передплатниками подій:

Пізніше це буде перероблено, оскільки пізніше ми перетворимо основні класи на підписників.

3 Перегляньте Bootstrap

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

  • простір імен початкового завантаження,
  • заборона доступу до файлу,
  • виклик автозавантажувача,
  • налаштування реєстру,
  • і запуск плагіна.

Звучить багато, але код досить короткий :

Однак зараз настав час поглянути на те, як це – розділити дочірній клас зі стандартного API віджетів на щось, що відповідає моделі коду, з яким ми працюємо.

Розбиття дочірнього класу

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

По-перше, створіть каталог API у каталозі src і додайте файл під назвою Widget.php. Тут будуть розміщені основи віджета. У наступній публікації ми розглянемо адміністративні та загальнодоступні таблиці стилів і файли JavaScript.

На цьому етапі основний файл має виглядати так :

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

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

Далі важливо переконатися, що цей клас додано до реєстру. Тож додайте наступні рядки коду в завантажувальну програму:

І тепер, коли ви активуєте плагін, ви повинні побачити наступне:

Віджети WordPress: рефакторинг, частина 7

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

Реалізація передплатників

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

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

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

Джерело запису: tommcfarlin.com

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