Click

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

Пишем-напишем плагин для вордпресс (wordpress plugin)

wp-plugin

Зміст до курсу створення плагіна для 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

'myplugin_set_options' ) ; , где __FILE__ будет автоматически заменено на вызов файла плагина). Отже, ми вже знаємо, як викликати функцію створення налаштувань для плагина в процесі його установки (за допомогою виклику register_activation_hook ( __FILE__ , 'myplugin_set_options' ) ; , де __FILE__ буде автоматично замінено на виклик файлу плагіна). Тепер для того, щоб написати WordPress плагін, нам потрібно встановити опції за умовчанням (створивши відповідні записи в таблиці prefix_options *) і створити для нього сторінку налаштувань, на якій користувач зможе управляти поведінкою плагіна.
* Prefix_options - таблиця mySQL з налагодження wordpress. Prefix задається у файлі wp-config при установці wordpress і за замовчуванням має занчение wp (тобто таблиця називається wp_options).

Створення та видалення налаштувань при написанні wordpress плагіна

Створення налаштувань за замовчуванням і таблиці з настройками плагіна.

Як ви пам'ятаєте з другої частини цього посібника, для прикладу я вирішив написати плагін wordpress, що змінює заголовок і тіло записи в момент її публікації. Це означає, що плагін повинен буде десь брати дані, необхідні для заміни. Для чого ми створимо окрему таблицю з даними плагіна. Отже:

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

    myplugin_get_table_handle ( ) ; # в этой переменной будет содержаться имя таблицы с настройкам написанного нами плагина wordpress $ Myplugin_prefs_table = myplugin_get_table_handle (); # в цієї змінної буде міститися ім'я таблиці з налаштуванням написаного нами плагіна wordpress
    function myplugin_get_table_handle () {
    ; # класс wordpress для работы с БД global $ wpdb; # клас wordpress для роботи з БД
    -> prefix . "myplugin_preferences" ; # создаём имя таблицы настроек плагина return $ wpdb -> prefix. "myplugin_preferences"; # створюємо ім'я таблиці налаштувань плагина
    }
  • Встановлюємо налаштування плагіна за замовчуванням у таблиці wordpress prefix_options і створюємо власну таблицю з настройками
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    function myplugin_set_options () {
    ; global $ wpdb;
    , 0 ) ; # будет ли плагин по умолчанию обрабатывать заголовки записей. add_option ('myplug_modify_title', 0); # чи буде плагін за замовчуванням обробляти заголовки записів. 0 - немає
    , 1 ) ; # --||-- тело записей. add_option ('myplug_modify_content', 1); # --||-- тіло записів. 1 - так

    wpsig_get_table_handle ( ) ; # вызов функции повторяется, т. к. данные действия происходят на этапе установки плагина, когда вызов в теле еще не может быть осуществлён $ Myplugin_prefs_table = wpsig_get_table_handle (); # виклик функції повторюється, тому що дані дії відбуваються на етапі встановлення плагіна, коли виклик в тілі ще не може бути здійснений
    '' ; # кодировка БД $ Charset_collate =''; # кодування БД
    version_compare ( mysql_get_server_info ( ) , '4.1.0' , '>=' ) ) if (version_compare (mysql_get_server_info (), '4 .1.0 ','> = '))
    "DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci" ; # устанавливаем уникод $ Charset_collate = "DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci"; # встановлюємо Унікод

    $wpdb -> get_var ( "SHOW TABLES LIKE ' $myplugin_prefs_table '" ) != $myplugin_prefs_table ) { # если таблица настроек плагина еще не создана - создаём if ($ wpdb -> get_var ("SHOW TABLES LIKE '$ myplugin_prefs_table'")! = $ myplugin_prefs_table) {# якщо таблиця налаштувань плагина ще не створена - створюємо
    "CREATE TABLE `" . $myplugin_prefs_table . "` ( $ Sql = "CREATE TABLE` ". $ Myplugin_prefs_table." `(
    `Id` INT NOT NULL AUTO_INCREMENT,
    `Title` VARCHAR (255) NOT NULL default'',
    `Body` VARCHAR (255) NOT NULL default'',
    UNIQUE KEY id (id)
    ) $ Charset_collate ";
    ABSPATH . 'wp-admin/includes/upgrade.php' ) ; # обращение к функциям wordpress для require_once (ABSPATH. 'wp-admin/includes/upgrade.php'); # звернення до функцій wordpress для
    ) ; # работы с БД. dbDelta ($ sql); # роботи з БД. створюємо нову таблицю
    }
    }
    </ Pre>
    ul > </ Li> </ ul>

    пишем плагин </ strong >, мы должны знать , как в дальнейшем работать с его опциями : Раз ми <strong> пишемо плагін </ strong>, ми повинні знати, як надалі працювати з його опціями:
    font color = "#CC33CC" > add_option </ font ></ em > — функция < strong > wordpress </ strong >, создающая новые записи в таблице < em > prefix_options </ em >; <Em> <font color = "# CC33CC"> add_option </ font> </ em> - функція <strong> wordpress </ strong>, що створює нові записи в таблиці <em> prefix_options </ em>;
    font color = "#CC33CC" > get_option </ font ></ em > – функция , извлекающая значение настроек ; <Em> <font color = "# CC33CC"> get_option </ font> </ em> - функція, витягуються значення настройок;
    font color = "#CC33CC" > update_option </ font ></ em > служит для обновления записей ( настроек ) , а <Em> <font color = "# CC33CC"> update_option </ font> </ em> служить для оновлення записів (налаштувань), а
    font color = "#CC33CC" > delete_option </ font ></ em > используется для их удаления . <Em> <font color = "# CC33CC"> delete_option </ font> </ em> використовується для їх видалення.

    "128_ %d 1%83 %d 0 %b 4 %d 0 %b 0 %d _1" > Удаление настроек плагина при деинсталляции </ h2 > <H2 id = "128_% d 1% 83% d 0% b 4% d 0% b 0% d _1"> Видалення налаштувань плагина при деінсталяції </ h2>
    "true" lang = "php" line_numbers = "false" > <Code escaped = "true" lang = "php" line_numbers = "false">
    function myplugin_unset_options () {
    , $myplugin_prefs_table ; global $ wpdb, $ myplugin_prefs_table;
    ) ; delete_option ('myplug_modify_title');
    ) ; delete_option ('myplug_modify_content');
    "DROP TABLE $myplugin_prefs_table " ; $ Sql = "DROP TABLE $ myplugin_prefs_table";
    query ( $sql ) ; $ Wpdb -> query ($ sql);
    }

    Створення і виведення сторінки налаштувань плагіна.

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

    Розміщення посилання на сторінку налаштувань плагіна.

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

    function myplugin_admin_page () {
    , 'MyPluginButton' , 8 , __FILE__ , 'myplugin_options_page' ) ; add_options_page ('MyPlugin', 'MyPluginButton', 8, __FILE__, 'myplugin_options_page');
    }

    Поясню, що ж тут відбувається:
    add_options_page - викликається стандартна функція wordpress для установки сторінки налаштувань.
    MyPlugin - заголовок сторінки налаштувань плагина;
    MyPluginButton - назва кнопки в меню, що служить для переходу до сторінки налаштувань;
    8 - рівень прав доступу користувача, якому буде видна кнопка (в даному випадку - не нижче адміністратора), чим більше цифра - тим вище повинні бути права;
    __FILE__ - Виклик файла з нашим плагином (якщо функції, що відповідають за роботу зі сторінкою налаштувань, знаходяться не в основному файлі скрипта, необхідно вказати шлях до файлу з ними). Для великих плагінів зі складною структурою може знадобитися.
    myplugin_options_page - ім'я функції, що займається створенням сторінки налаштувань і подальшою роботою з нею.

    Формування сторінки з настройками

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

    Отже, сторінка налаштувань плагина в wordpress являє собою звичайну html сторінку (ось так от банально влаштований світ :) ), Всередині якої створюються різні поля для введення даних користувача. Щоб розуміти структуру цієї сторінки, необхідно бути знайомим з cgi-програмуванням в цілому (кому цікаво - шукайте книги по cgi-програмування в " Бібліотеці "). Якщо пояснювати на пальцях, це виглядає наступним чином:

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

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

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

    Всім успіхів!

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

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

Comments

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

  1. готель Ізмайлово пише:

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

  2. HilikFoter пише:

    Постійно перечитую ваші статті. Зберігаю їх на комп і потім перечитую

  3. Alexandr пише:

    При активації плагіна отримую повідомлення про помилку -
    Call to undefined function wpsig_get_table_handle () in wp \ wp-content \ plugins \ example_plugin.php on line 21

  4. Artstock пише:

    dimio пише::

    myplugin_get_table_handle

    я теж так подумав і замінив wpsig_get_table_handle () на myplugin_get_table_handle ()

    Але в результаті:
    Warning: call_user_func_array () [function.call-user-func-array]: First argument is expected to be a valid callback, 'wpsignaturer_admin_page' was given in E: \! Web \!! Www \ wp \ wp-includes \ plugin . php on line 339

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

  5. Alexandr пише:

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

  6. Іларіон пише:

    Ну от, з кожним постом все краще і краще :-) І вже не хочу бажати тобі, про dimio, аффтар, випий йаду! :-) Але якщо серйозно, то раджу в постах давати якийсь приклад написання плагіна. Тобто по ходу цього міні-підкурси сам аффтар, тобто ти розповідаєш як написати той чи інший плагін, напр., плагін посторінкового навігації або капчі :-) Ну а якщо таланту до php немає, то можна хоча б посточно розбирати будь-якої вже готовий плагін :-) Пали, аффтар!

  7. Leprekon пише:

    А як розмістити посилання після меню "Настройки"?

Leave a Reply