Главная » Створення сайтів » Wordpress » Як правильно написати плагін для wordpress. Созданіе плагіна

Як правильно написати плагін для wordpress. Созданіе плагіна

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

Імена, файли і розташування

Ім'я плагіна

Перше завдання при створенні плагіна - подумати, що плагін буде робити, і придумати для нього ім'я (бажано унікальне). Перевірте «Модулі» та інші сховища, щоб переконатися в тому, що придумане вами ім'я - унікальне; ви можете також погуглити за обраним вами імені. Більшість розробників плагінів вибирають імена, які відображають функціональність їх плагіна; наприклад, плагін для відображення погоди може мати в назві слово «погода». Назва може складатися з декількох слів.

Файли плагіна

Наступний крок - створення файлу PHP з ім'ям, похідним від назви плагіна. Наприклад, якщо ваш плагін буде називатися Fabulous Functionality, ви можете назвати ваш файл fabfunc. php. Знову ж, спробуйте створити унікальне ім'я. Люди, які встановлять ваш плагін, покладуть цей файл в свою директорію для плагінів, wp-content / plugins /. і ніяка пара використовуваних плагінів не повинна мати однакове ім'я файлу.

Інший варіант - розбити ваш плагін на кілька файлів. Ваш плагін повинен мати як мінімум один файл PHP; він також може містити файли JavaScript, CSS, зображення, мовні файли і т. п. Якщо ваш плагін складається з декількох файлів, задайте унікальне ім'я для директорії, в якій вони лежать, і для головного файлу PHP, такі як fabfunc і fabfunc. php в нашому прикладі, покладіть ваші файли в цю директорію, і дайте користувачам можливість встановлювати цілу директорію в wp-content / plugins /.

У цій статті «PHP-файл плагіна» означає головний PHP-файл, який знаходиться в директорії wp-content / plugins / або в її піддиректорії.

Файл Readme

Якщо ви хочете розмістити ваш плагін на http: // wordpress. org / extend / plugins /. вам необхідно створити файл readme. txt в стандартному форматі і включити його в свій плагін. Дивіться http: // wordpress. org / extend / plugins / about / readme. txt для отримання роз'яснень по формату.

Домашня сторінка

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

Заголовки файлу

Саме час внести деяку інформацію в ваш головний файл PHP.

Стандартна інформація про плагін

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

Мінімальна інформація, яка потрібна WordPress, щоб виявити ваш плагін - його назва (Plugin Name). Решта інформації (якщо вона є) використовується для створення таблиці плагінів на сторінці управління плагінами. Порядок рядків неважливий.

Ліцензія

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

Програмування плагіна

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

Зачіпки (Hook) плагіна

Отже, як же взаємодіють компоненти системи плагін + ядро ​​Wordpress? Для того, щоб плагіни мали можливість впливати на роботу ядра Wordpress або на кінцевий результат його дій, була придумана система так званих зачіпок (часто їх без перекладу так і називають «хукамі» від англ. Hook - гачок, зачіпка). Принцип її дії полягає в тому, що кожна більш-менш важлива елементарна функція в ядрі Wordpress перед тим як повернути якийсь результат своєї роботи або зробити якусь важливу дію (наприклад вивести вміст записи на сторінці, або зробити запит до бази даних) «намагається» виконати додаткові інструкції (рядки коду) призначені саме для неї в файлах плагіна. Таку спробу вона робить за допомогою зачіпок, які прописані в тілі цієї функції. Ось приклад виклику зачіпок плагінів з ядра Wordpress:

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

Наприклад, перед тим як WordPress додає заголовок до запису, спочатку він перевіряє, чи має будь-якої плагін зареєстровані функції для зачіпки під назвою «the_title».

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

Таким чином, якщо ваш плагін повинен додавати певну інформацію до заголовка запису або змінювати її, в ньому повинна бути зареєстрована зачіпка-фільтр для «the_title» і в ньому повинна бути фукнція, яка робить все потрібні зміни з заголовками.

Інший приклад - існує зачіпка під назвою «wp_footer». Перед кінцем HTML-сторінки, яку генерує WordPress, він перевіряє, чи мають якісь плагіни зареєстровану функцію для «wp_footer», і запускає її в разі виявлення такої.

Все зачіпки в Wordpress діляться на дві категорії - Фільтри і Дії. (Filters і actions відповідно). Фільтри (filters) дійсно призначені для «фільтрування» (зміни) будь-яких даних перед тим як вони будуть виведені на сторінці або додані для зберігання в базу даних. Це фільтрація спаму, помилок або просто помилкового введення в формах, звідки власне і сталося англійське назву. А другі (дії, actions) призначені для заміни різних дій ядра вашими діями (наприклад зміни рядка запиту до бази даних), в програмуванні така зміна дій базового функціоналу ще називають перевантаженням.

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

Теги шаблонів

;

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

Щоб оголосити тег шаблону, просто напишіть функцію PHP, і інвентаризують її для користувачів плагіна на вашій сторінці, присвяченій плагіну і / або в головному файлі плагіна. Хороша ідея, документуючи функцію, наводити приклад виконання, що містить <? Php і?>. який потрібно додати в тему для отримання результату.

Збереження даних плагіна в базі

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

  • Використовуйте механізм налаштувань WordPress (про нього розповідається нижче). Цей метод призначений для зберігання відносно невеликої кількості іменованої статичної інформації - даних, які власник блогу вводить при першому запуску плагіна, і потім рідко змінює.
  • Створіть нову окрему таблицю в базі даних. Цей метод призначений для даних, пов'язаних з певними записами, сторінками, додатками або коментарями - даних, обсяг яких зростає з плином часу, і які не мають індивідуальних імен. Дивіться Creating Tables with Plugins для отримання інформації, як створити таблицю плагіна.
  • Механізм налаштувань WordPress

    Інформацію про те, як створити сторінку, автоматично зберігає ваші налаштування, можна отримати в статті «Створення сторінок настройки».

    WordPress має механізм для збереження, відновлення і вилучення окремих іменованих даних, що зберігаються в базі WordPress. Щоб отримати установки можуть бути рядками, масивами або об'єктами PHP (вони будуть серіалізовані або сконвертовані в рядок перед записом, і десеріалізовани перед витяганням). Назви налаштувань - рядки, і вони повинні бути унікальними, щоб не конфліктувати з Wordpress або іншими плагінами.

    Ось головні функції, які ваш плагін може використовувати, щоб отримати доступ до налаштувань WordPress:

    Створює нову настройку; не робить нічого, якщо опція вже існує. $ Name Обов'язковий (рядок). Ім'я настройки. $ Value Необов'язковий (рядок), за замовчуванням - порожній рядок. Значення настройки. $ Deprecated Необов'язковий (рядок), більше не використовується WordPress. Можна передати порожній рядок або null, щоб використовувати наступний за ним параметр $ autoload. $ Autoload Необов'язковий, за замовчуванням - «так» (enum: «так» або «ні»). Якщо встановлено «так», настройки автоматично витягуються функцією get_alloptions. Витягує значення настройки з бази. $ Option Обов'язковий (рядок). Ім'я настройки, значення якої потрібно отримати. Список налаштувань за замовчуванням, створених при установці WordPress, можна знайти в Option Reference. Оновлює або створює значення настройки в базі (примітка: можна не викликати add_option. Якщо вам не потрібен параметр $ autoload). $ Option_name Обов'язковий (рядок). Ім'я настройки для оновлення. $ Newvalue Обов'язковий. Нове значення настройки.

    Панелі адміністірованія

    За умови, що ваш плагін має якісь опції, що зберігаються в базі WordPress (див. Розділ вище), ви, ймовірно, захочете мати адміністративну панель, яка дозволить користувачам дивитися і редагувати налаштування вашого плагіна. Методи створення панелей описані в статті «Додавання адміністративних меню».

    Інтернаціоналізація плагіна

    Після того, як ви закінчили писати ваш плагін, його необхідно Інтернаціоналізувати (за умови, що ви плануєте поширювати ваш плагін). Інтернаціоналізація - це процес налаштування програмного забезпечення під Локалізацію ; локалізація - це процес перекладу на різні мови відображуваного програмою тексту. WordPress використовується по всьому світу, і інтернаціоналізація та локалізація вбудовані в його структуру, в тому числі, і локалізація плагінів. Подробиці використання GNU gettext для локалізації WordPress можна дізнатися в Translating WordPress.

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

    • Виберіть ім'я для простору перекладу вашого плагіна. Зазвичай воно таке ж, як ім'я головного файлу вашого плагіна (тільки без. Php). Ім'я повинно бути унікальним.
    • Скрізь, де ваш плагін використовує рядки тексту, які будуть показані користувачеві (відомі як «повідомлення»), укладіть їх в одну з двох gettext-функцій WordPress. Зауважте, що у вашому плагін ви повинні використовувати другий аргумент - ім'я простору перекладу, яке ви вибрали (в ядрі WordPress аргумент $ domain залишається порожнім).
    __ ($ Message, $ domain) Перекладає $ message. використовуючи поточну локаль для $ domain. Оберніть рядки, які збираєтеся використовувати в розрахунках, в цю функцію. _e ($ message, $ domain) Перекладає $ message. використовуючи поточну локаль для $ domain. і виводить на екран. Оберніть в цю функцію рядки, які збираєтеся показувати користувачеві.
    • Створіть для вашого плагіна файл POT (каталог перекладів для всіх перекладних повідомлень) і поширюйте його разом з плагіном. Користувачам необхідно буде покласти MO-файл перекладу в директорію вашого плагіна і назвати його domain-ll_CC. mo. де ll_CC - ім'я потрібної локалі. Для отримання інформації про файлах POT, MO і локалях см. Translating WordPress.
    • Завантажуйте переклад для поточної локалі і ваше текстове простір за допомогою функції load_plugin_textdomain до того, як викликаються функції gettext, але настільки пізно, наскільки можливо в сесії (бо деякі багатомовні плагіни змінюють локаль при завантаженні). Одна з можливих реалізацій - оголошення функції ініціалізації, яка викликається вище всіх функцій вашого плагіна. Наприклад, ваше простір тексту називається «fabfunc»:

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

    Якщо ви читаєте цю секцію, щоб інтернаціоналізувати тему, можна дотримуватися наведених вище рекомендацій, з деякими винятками:

    • MO-файл потрібно скопіювати в каталог теми (поруч зі style. Css).
    • MO-файл потрібно назвати ll_CC. mo. де ll_CC - ім'я локалі (т. е. ім'я простору не повинно бути частиною імені файлу).
    • Щоб завантажити ім'я простору перекладу, вставте наступний код (з PHP-заголовком, якщо необхідно) в файл functions. php вашої теми: