При активации плагин может создать свои опции и таблицу в базе данных WordPress, а также добавить страницу выбора опций в админку. При деактивации плагин должен удалить из базы данных WordPress свои опции и таблицу.
В этой статье:
Регистрация функций, выполняемых при активации и деактивации плагина:
register_activation_hook($file, 'testplugin_install'); register_deactivation_hook($file, 'testplugin_uninstall');
$file - путь к файлу плагина, полный или в папке wp-content/plugins
Начало кода плагина: опции и таблица плагина в базе данных
<?php /* Plugin Name: Test Plugin Plugin URI: http://mblogm.ru/ Description: Testing Author: MBlogM Version: 1 Author URI: http://mblogm.ru/ */ add_option("testplugin_version", "1.0"); // версия плагина register_activation_hook(__FILE__, 'testplugin_install'); register_deactivation_hook(__FILE__, 'testplugin_uninstall'); function testplugin_install(){ global $wpdb; $table_name = $wpdb->prefix . "test_tblname"; // создание таблицы данных плагина в базе данных if($wpdb->get_var("SHOW TABLES LIKE '$table_name'") != $table_name) { $sql = "CREATE TABLE " . $table_name . " ( id mediumint(9) NOT NULL AUTO_INCREMENT, time bigint(11) DEFAULT '0' NOT NULL, name tinytext NOT NULL COLLATE utf8_general_ci, text text NOT NULL COLLATE utf8_general_ci, UNIQUE KEY id (id) );"; require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); dbDelta($sql); // добавление записи в таблицу $the_name="name"; $the_text="text"; $x = $wpdb->insert( $table_name, array('time' => current_time('mysql'), 'name' => $the_name, 'text' => $the_text ) ); } ... }?>
Подробнее о создании таблиц в базе данных
Добавление страницы опций плагина в админку
В коде плагина нужно
- Создать и зарегистрировать функцию создания меню (ссылки на страницу настроек плагина) с помощью хука admin_menu
- Создать HTML-код страницы опций плагина, которая выводится по щелчку на ссылке в меню
Ссылка на страницу плагина
Плагин может создать в админке свое меню верхнего уровня и подменю
<?php add_menu_page( $page_title, $menu_title, $capability, $menu_slug, $function, $icon_url, $position ); ?> <?php add_submenu_page( $parent_slug, $page_title, $menu_title, $capability, $menu_slug, $function); ?>
Здесь parent_slug - это имя родительского меню плагина или стандартного
файла админки WordPress, например,
для меню Параметры (Settings): add_submenu_page ('options-general.php',...)
Для добавления подменю (ссылки на страницу плагина) в стандартные меню есть функции-оболочки
add_dashboard_page | add_pages_page | add_users_page |
add_posts_page | add_comments_page | add_management_page |
add_media_page | add_theme_page | add_options_page |
add_links_page | add_plugins_page |
например:
<?php add_options_page( $page_title, $menu_title, $capability, $menu_slug, $function); ?>
Подробнее
Продолжение кода плагина: административная страница плагина
<?php add_action('admin_menu', 'testplugin_menu'); // регистрация // manage_options - изменение настроек (права доступа администратора) function testplugin_menu() { add_options_page('Test Plugin Options', 'Test Plugin', 8, __FILE__, 'testplugin_options'); } function testplugin_options() { if (!current_user_can('manage_options')) { wp_die( __('У вас нет прав доступа на эту страницу.') ); } echo '<div class="wrap">'; echo '<p>Здесь выводится HTML-форма для выбора опций.</p>'; echo '</div>'; } ?>
- Функция add_action вызывает "хук", который регистрирует функцию testplugin_menu()
- Функция testplugin_menu() добавляет ссылку на страницу плагина (Test Plugin') в админку в меню Параметры (Settings) с помощью функции add_options_page.
- Функция testplugin_options() создает отображаемые элементы страницы настроек плагина и PHP-код для обработки.
Роли и возможности: Roles and Capabilities
Функции WordPress для работы с опциями плагина, хранящимися в базе данных:
add_option($option_name, $value, $deprecated, $autoload); // создает новую запись в таблице wp_options get_option($option_name); // извлекает значение настройки update_option($option_name, $newvalue);// обновляет настройку (автоматически добавляет) delete_option(option_name) //удаляет настройку
Удаление настроек плагина при деактивации:
function testplugin_uninstall () { global $wpdb, $test_tblname; delete_option('testplugin_version'); $sql = "DROP TABLE $test_tblname"; $wpdb->query($sql); }
нечего не понил!
if (!current_user_can('8'))
Usage of user levels is deprecated. Use capabilities instead.
if (!current_user_can('administrator'))
Как добавить свой пункт в меню админки?
add_menu_page