Click

Пишемо плагін для WordPress. Функціональна складова (частина 5)

plugins-wordpress

Зміст до курсу створення плагіна для WordPress

Показати зміст »

  1. Введення, загальна інформація (Напишемо плагін для WordPress. Часть1.)
  2. Загальна теорія (Напишемо плагін для WordPress. Частина 2.)
  3. Підготовка до створення сторінки налаштувань (Напишемо плагін для WordPress. Частина 3.)
  4. Створення сторінки налаштувань плагина (Напишемо плагін для WordPress. Частина 4.)
  5. Функціональна складова (Напишемо плагін для WordPress. Частина 5.)
  6. Інтернаціоналізація і русифікація (Напишемо плагін для WordPress. Частина 6.)
  7. Додавання в репозиторій WordPress.org (Напишемо плагін для WordPress. Частина 7.)
  8. Файл з вихідним кодом плагина для 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 надає кілька способів (методів) отримання інформації з БД:

  1. $ Wpdb-> get_results ($ sql, $ type); - отримання всіх рядків результату запиту, де $ type може приймати такі значення:

    • OBJECT - дані повертаються у вигляді масиву, де кожен елемент є об'єктом, а його поля - це поля вашої таблиці в БД;
    • ARRAY_A - дані повертаються у вигляді асоціативного масиву (хеша);
    • ARRAY_N - кожен рядок даних представлена ​​у вигляді нумерованого масиву, кожному полю буде присвоєно числовий індекс (по порядку розташування полів у таблиці БД).
  2. $ Wpdb-> query ($ sql); - метод для виконання так званих "простих" запитів, застосовується для обробки запитів INSERT, UPDATE, DELETE.
  3. $ Wpdb-> get_row ($ sql, $ type, $ offset); - отримання одного рядка з усього результату запиту, де:
    • $ Type - див вище;
    • $ Offset - номер рядка, який буде обрана з усього результату (хинт: можна генріровать $ offset випадковим чином і отримувати випадкову рядок із запиту).
  4. $ Wpdb-> get_var ($ sql, $ col_offset, $ row_offset); - цей метод дозволяє отримати одне значення з усього результату запиту, відповідно:
    • $ Col_offset - див вище;
    • $ Row_offset - номер стовпця, з якого буде узятий результат.

    Таким чином, згенерував випадкові номери рядка і стовпця, можна отримати з бази випадкове значення.

Написання плагіна для WordPress майже закінчено

Що ж, ось ми і розглянули функціональну частину плагіна. В принципі, він вже повинен бути працездатний. Нам залишилося тільки інтернаціоналізувати наш плагін і познайомитися з порядком його додавання в репозиторії wordpress.org.
Цим ми і займемося в наступних випусках керівництва "Як написати плагін для WordPress", а поки як і раніше можна зберегти файл з плагіном-прикладом.

Всім удачі! :)

Ще на схожі теми:

Category Рубрики: seo , Блогінг , Кодинг | Tag Мітки: , , , , , | Comments 11 коментарів

Comments

11 коментарів to "Пишемо плагін для WordPress. Функціональна складова (частина 5) "

  1. Матвій пише:

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

  2. Дмитро пише:

    Привіт!
    Я плагінів не писав до вордпрес, але щось мені підказує, що тут помилочка:
    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 ні один не потрібен. Швидше за все змінні передаються по посиланню. Другий ретурн взагалі не відпрацює ніколи.

  3. Vitalick пише:

    Спасибі за статтю! дуже придалася :)

  4. Shua пише:

    Сторінка з 4-ю частиною курсу не відображається. Пічаль : (
    Намагаюся розібратися по ісходнику.
    У прикладі викликала сумнів рядок $ $ myplugin_opt = get_option ($ myplugin_opt)
    Точно два знаки $ в імені змінної?

    • dimio пише:

      Точно два. Це оголошення нової змінної, ім'ям которй буде значення старої. Наприклад:

      1
      2
      3
      4
      5
      $ Var1 = 'var2';
      $ $ Var1 = 'test';
      echo $ var2;
      -------------------
      test

      Четверту частину полагодив, дякую, що повідомили.

    • dimio пише:

      У вас в

      1
      $ Myplugin_opt

      лежатиме назва опції. Якщо ви прямо туди запишете її значення - затре назву. А так - буде пов'язана змінна із значенням. Я б зобразив це так:

      1
      $ Var = {'ім'я' => 'значення'}

      І надалі можна звертатися до значення змінної по імені.

  5. Shua пише:

    Вік живи - вік учись :) Про $ $ не знав, цікава особливість мови

  6. Yuri пише:

    Спробував поставити плагін в Вордпресс. При спробі активації викликає фатальну помилку: (

    • dimio пише:

      Проблему усунув, в WP 3.2.1 перевірив - нормально активується.
      До речі для пошуку помилок рекомендую на час налагодження в php.ini виставити:
      display_errors = On
      Тоді не доведеться в логи лазити, відразу буде видавати опис помилки і рядок, в якій вона відбулася.

  7. Марк пише:

    Спасибі за статтю, цікава, ось ще одна стаття ( [Посилання] ), Яка допоможе початківцям на прикладі розібратися з плагінопісаніем під WordPress.

Leave a Reply