Зберігання даних у вордпрес
Завдання збереження даних варто щоразу коли потрібно щось програмувати, а при розробці плагінів це одне з перших завдань після створення інтерфейсної частини. але дані в WordPress можна зберігати по-різному. Я пропоную два варіанти.
- Збереження даних за допомогою функції add_option для опцій.
- Додавання даних до нової таблиці бази даних для зберігання великої кількості даних і тих, які можуть постійно змінюватися.
Розглянемо як правильно зберігати опції.
Розмістимо код у папку з плагінами у новий файл з ім'ям add-my-options.php.
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 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
<?php /** * @package Package name * @version 1.0 */ /* Plugin Name: My plugin add-my-options Plugin URI: https://wp-admin.com.ua Description: спасибо сайту wp-admin.com.ua, он научит меня делать плагины ) Armstrong: My Plugin. Author: Name Author Version: 1.0 Author URI: https://wp-admin.com.ua */ add_action('admin_menu', 'create_custom_panel'); function create_custom_panel() { add_menu_page('menu page', 'Add data', 'manage_options', 'custom-panel', 'custom_panel'); } function custom_panel(){ echo '<div class="wrap"> <h2>Сохраняем опции плагина</h2> <form method="post" action="options.php"> '.wp_nonce_field('update-options').' <table class="form-table"> <tr valign="top"> <th scope="row">Опция 1</th> <td><input type="text" name="my_option_first" value="'.get_option('my_option_first').'" /></td> </tr> <tr valign="top"> <th scope="row">Опция 2</th> <td><input type="text" name="my_option_second" value="'.get_option('my_option_second').'" /></td> </tr> <tr valign="top"> <th scope="row">Опция 3</th> <td><input type="text" name="my_option_third" value="'.get_option('my_option_third').'" /></td> </tr> </table> <input type="hidden" name="action" value="update" /> <input type="hidden" name="page_options" value="my_option_first,my_option_second,my_option_third" /> <p class="submit"> <input type="submit" class="button-primary" value="Сохранить" /> </p> </form> </div>'; } ?> |
Після розміщення коду активуйте плагін у панелі адміністратора і якщо все зробили правильно у вас з'явиться пункт Add data у меню адміністратора зліва.
Порядку розглянемо код написаного плагіна
функція wp_nonce_field(‘update-options’) додає два приховані поля, які дозволяють автоматично перевіряти права користувача на зміну налаштувань і перенаправляти його назад.
функція get_option() виводить збережені дані у поле введення. Ще одна ділянка коду, що знаходиться в кінці форми, відповідає за запис опцій з полів введення.
1 2 |
<input type="hidden" name="action" value="update" /> <input type="hidden" name="page_options" value="my_option_first,my_option_second,my_option_third" /> |
«page_options» містить розділений комами список всіх налаштувань, які потрібно записати при збереженні.
На офіційному сайті WordPress знайшов ще один приклад зберігання даних. Мені здається, він буде більш правильним так як є явний поділ шаблону форми та коду. Код виглядає набагато чистіше. Описувати не буду з коду все зрозуміло, якщо не зрозуміло пишіть у коментарях, постараюся пояснити.
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 40 41 42 43 44 45 46 47 48 49 50 51 52 |
<?php // create custom plugin settings menu add_action('admin_menu', 'baw_create_menu'); function baw_create_menu() { //create new top-level menu add_menu_page('BAW Plugin Settings', 'BAW Settings', 'administrator', __FILE__, 'baw_settings_page',plugins_url('/images/icon.png', __FILE__)); //call register settings function add_action( 'admin_init', 'register_mysettings' ); } function register_mysettings() { //register our settings register_setting( 'baw-settings-group', 'new_option_name' ); register_setting( 'baw-settings-group', 'some_other_option' ); register_setting( 'baw-settings-group', 'option_etc' ); } function baw_settings_page() { ?> <div class="wrap"> <h2>Your Plugin Name</h2> <form method="post" action="options.php"> <?php settings_fields( 'baw-settings-group' ); ?> <table class="form-table"> <tr valign="top"> <th scope="row">New Option Name</th> <td><input type="text" name="new_option_name" value="<?php echo get_option('new_option_name'); ?>" /></td> </tr> <tr valign="top"> <th scope="row">Some Other Option</th> <td><input type="text" name="some_other_option" value="<?php echo get_option('some_other_option'); ?>" /></td> </tr> <tr valign="top"> <th scope="row">Options, Etc.</th> <td><input type="text" name="option_etc" value="<?php echo get_option('option_etc'); ?>" /></td> </tr> </table> <p class="submit"> <input type="submit" class="button-primary" value="<?php _e('Save Changes') ?>" /> </p> </form> </div> <?php } ?> |
Перевірити останній приклад не встиг, але перший працює стабільно. Про роботу з базами даних постараюся описати у наступних випусках.
Успіхів у розробці плагінів!
/*
- Базовий курс з веб-дизайну;
- Верстка сайтів;
- Загальний курс CMS WordPress та продовження курсу з розробки шаблонів;
- Розробка сайтів на PHP.
Ще одна стаття на додаток про роботу з опціями.
http://wp-admin.com.ua/rassmotrim-mehanizmyi-rabotyi-s-optsiyami/