Пишемо плагін для WordPress. Функціональна складова (частина 5)
Зміст до курсу створення плагіна для WordPress
- Введення, загальна інформація (Напишемо плагін для WordPress. Часть1.)
- Загальна теорія (Напишемо плагін для WordPress. Частина 2.)
- Підготовка до створення сторінки налаштувань (Напишемо плагін для WordPress. Частина 3.)
- Створення сторінки налаштувань плагина (Напишемо плагін для WordPress. Частина 4.)
- Функціональна складова (Напишемо плагін для WordPress. Частина 5.)
- Інтернаціоналізація і русифікація (Напишемо плагін для WordPress. Частина 6.)
- Додавання в репозиторій WordPress.org (Напишемо плагін для WordPress. Частина 7.)
- Файл з вихідним кодом плагина для WordPress
Функціональна частина створення плагіна для WordPress
І знову поговоримо про те, як написати для блог-движка WordPress свій плагін . У минулий раз ми зупинилися на тому, що створили сторінку налаштувань для плагіна і додали її в адміністративну панель WordPress. Настав час перейти безпосередньо до роботи над самою непомітною, але, тим не менш, однією з найважливіших частин плагіна - його функціоналом. Нам необхідно розробити процедури, при виклику яких з плагіна відбуватимуться закладені в його проект дії.
Почнемо.
Пишемо функції для плагіна WordPress
Власне кажучи, оскільки функціональна частина - справа абсолютно індивідуальне, я обмежуся простим прикладом. Функції мого wordpress плагіна будуть просто додавати якесь слово до заголовків записів та / або якусь фразу до вмісту записів.
Створення більш складних функцій залишу для знавців php, мені ж якось ближче perl. Скажу тільки, що завжди можна пошукати готовий плагін, що має в своєму складі частину потрібного нам функціонала, і, якщо він ліцензований під вільною ліцензією, скопіювати функції звідти і переробити їх під себе. Текст ліцензії, як правило, додається до плагіну. В крайньому випадку у файлі плагіна буде вказано назву ліцензії, під якою він поширюється.
Функція модіікаціі заголовка і тіла WordPress-публікацій
Напишемо і розберемо функцію, що займається в нашому плагіні безпосередньо модифікацією заголовка та вмісту публікацій в WordPress-блозі.
function mod_content ($ title, $ content) { if (get_option ('myplug_modify_title')) { $ Title = $ title. myplugin_get_phrase ($ ph_type = "title"); } if (get_option ('myplug_modify_content')) { $ Content = $ content. myplugin_get_phrase ($ ph_type = "body"); } return $ title; return $ content; }
Ця функція отримує заголовок і тіло запису і потім, якщо на сторінці налаштувань плагина була вказана соотвтетствующая опція, обробляє отримані дані. У нашому випадку - приклеює в кінець заголовка / тіла wordpress-публікації випадкову фразу, взяту з таблиці налаштувань плагина.
Потім змінені (або залишилися незмінними) заголовок і тіло записи повертаються назад в движок.
Функція отримання випадкової фрази з таблиці налаштувань плагина
А тепер спробуємо написати функцію плагіна, яка одержує випадкові фрази з таблиці налаштувань, що зберігається в БД нашого WordPress-блогу.
function myplugin_get_phrase ($ ph_type) { global $ wpsig_sig_table, $ wpdb; $ Sql = "SELECT` $ ph_type 'FROM $ myplugin_prefs_table ORDER BY RAND () LIMIT 1 "; $ Phrase = $ wpdb-> get_var ($ sql); return $ phrase; }
Ця функція, будучи викликаною, отримує на вході ім'я стовпця в таблиці БД, з якого потрібно взяти якесь випадкове значення. Запит на вибірку організований примітивно і абсолютно неоптимально. При наявності великої кількості даних у таблиці конструкція сортування ORDER BY RAND буде досить сильно гальмувати, але я не припускаю для совего плагіна роздутою таблиці в БД і тому пременяю такий вид сорітовкі. LIMIT 1, до речі, поверне нам перше значення з сформованого списку записів.
Якщо ви збираєтеся обробляти скільки-небудь серйозну кількість даних у таблиці - обробку виводу необхідно з mySQL перекласти на php. Тобто отримавши масив значень за допомогою запиту до бази, потім обробити цей масив всередині свого плагіна.
Функції WordPress для роботи з БД mySQL
Механізм WordPress надає кілька способів (методів) отримання інформації з БД:
- $ Wpdb-> get_results ($ sql, $ type); - отримання всіх рядків результату запиту, де $ type може приймати такі значення:
- OBJECT - дані повертаються у вигляді масиву, де кожен елемент є об'єктом, а його поля - це поля вашої таблиці в БД;
- ARRAY_A - дані повертаються у вигляді асоціативного масиву (хеша);
- ARRAY_N - кожен рядок даних представлена у вигляді нумерованого масиву, кожному полю буде присвоєно числовий індекс (по порядку розташування полів у таблиці БД).
- $ Wpdb-> query ($ sql); - метод для виконання так званих "простих" запитів, застосовується для обробки запитів INSERT, UPDATE, DELETE.
- $ Wpdb-> get_row ($ sql, $ type, $ offset); - отримання одного рядка з усього результату запиту, де:
- $ Type - див вище;
- $ Offset - номер рядка, який буде обрана з усього результату (хинт: можна генріровать $ offset випадковим чином і отримувати випадкову рядок із запиту).
- $ Wpdb-> get_var ($ sql, $ col_offset, $ row_offset); - цей метод дозволяє отримати одне значення з усього результату запиту, відповідно:
- $ Col_offset - див вище;
- $ Row_offset - номер стовпця, з якого буде узятий результат.
Таким чином, згенерував випадкові номери рядка і стовпця, можна отримати з бази випадкове значення.
Написання плагіна для WordPress майже закінчено
Що ж, ось ми і розглянули функціональну частину плагіна. В принципі, він вже повинен бути працездатний. Нам залишилося тільки інтернаціоналізувати наш плагін і познайомитися з порядком його додавання в репозиторії wordpress.org.
Цим ми і займемося в наступних випусках керівництва "Як написати плагін для WordPress", а поки як і раніше можна зберегти файл з плагіном-прикладом.
Всім удачі! ![]()
Ще на схожі теми:
Рубрики: seo , Блогінг , Кодинг |
Мітки: how-to , plugin , wordpress , блог , програмінг , просування |
11 коментарів 


Цікаво, якщо текст c вашого сайту собі копіювати, посилання куди краще ставити прямо на цей запис блогу або ж на головну сторінку.
Краще на запис.
Привіт!
Я плагінів не писав до вордпрес, але щось мені підказує, що тут помилочка:
function mod_content ($ title, $ content) {
if (get_option ('myplug_modify_title')) {
$ Title = $ title. myplugin_get_phrase ($ ph_type = "title");
}
if (get_option ('myplug_modify_content')) {
$ Content = $ content. myplugin_get_phrase ($ ph_type = "body");
}
return $ title;
return $ content;
}
Я так думаю, return ні один не потрібен. Швидше за все змінні передаються по посиланню. Другий ретурн взагалі не відпрацює ніколи.
Спасибі за статтю! дуже придалася
Сторінка з 4-ю частиною курсу не відображається. Пічаль
Намагаюся розібратися по ісходнику.
У прикладі викликала сумнів рядок $ $ myplugin_opt = get_option ($ myplugin_opt)
Точно два знаки $ в імені змінної?
Точно два. Це оголошення нової змінної, ім'ям которй буде значення старої. Наприклад:
2
3
4
5
$ $ Var1 = 'test';
echo $ var2;
-------------------
test
Четверту частину полагодив, дякую, що повідомили.
У вас в
лежатиме назва опції. Якщо ви прямо туди запишете її значення - затре назву. А так - буде пов'язана змінна із значенням. Я б зобразив це так:
І надалі можна звертатися до значення змінної по імені.
Вік живи - вік учись
Про $ $ не знав, цікава особливість мови
Спробував поставити плагін в Вордпресс. При спробі активації викликає фатальну помилку: (
Проблему усунув, в WP 3.2.1 перевірив - нормально активується.
До речі для пошуку помилок рекомендую на час налагодження в php.ini виставити:
display_errors = OnТоді не доведеться в логи лазити, відразу буде видавати опис помилки і рядок, в якій вона відбулася.
Спасибі за статтю, цікава, ось ще одна стаття ( ), Яка допоможе початківцям на прикладі розібратися з плагінопісаніем під WordPress.