При активации плагин может создать свои опции и таблицу в базе данных 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://wordpress.howtoo.ru/
Description: Testing
Author: MBlogM
Version: 1
Author URI: http://wordpress.howtoo.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