Интернет, компьютеры, софт и прочий Hi-Tech | ||
Избранные докиМетки (все метки)hi tech, internet, it, интернет, информационные технологии, ит, по, программное обеспечение, сайт, софт
Подписаться через RSS2Email.ru
Дополнительнооптимизация, сайт, мониторы, движок, Битрикс, хостинг, сайты, мобильные, электроника, видеокарта |
Плагины WordPress
Добавление в административное менюПеревод с английского: Тимур Расулов (aka Dolphin). Оригинальный текст: Adding Administration Menus СодержаниеМногие плагины предлагают пользователям опции и настройки, дающие возможность выбрать, как будет работать плагин. Как автор плагина, вы имеете несколько путей решения этой задачи. Первый - предложить пользователь редактировать PHP - код плагина напрямую, но это для большинства пользователей как минимум неудобно. Лучшим решением будет создание конфигурационных окон, позволяющих пользователю выбирать настройки более привычным способом. Эта статья объясняет, как добавить собственные административные окна для WordPress с помощью плагина. Предполагается, что вы уже ознакомились с написанием плагинов и API для плагинов в разделе "Actions and Filters". Меню и подменюПервый шаг при создании собственного конфигурационного окна - выбор его места в административном меню WordPress. Большинство пагинов располагают свои панели управления в существующих пунктах верхнего уровня. Вот список пунктов верхнего уровня меню и их примерного содержимого.
Если ваш плагин добавляет в WordPress нечто концептуально новое и требует множества конфигурационных окон, возможным решением может быть создание нового пункта меню верхнего уровня. К этому следует прибегать лишь в случае, если вам действительно нужно множество дополнительных окон, чтобы заставить WordPress делать что-то нестандартное. Примером может быть управление галереей изображений, администрирование базы даннх или управление конференцией. При помощи Custom Admin Menu plugin, пользователь может самостоятельно выбирать, хочет ли он видеть настройки вашего плагина в верхнем меню или нет - возможно, вы захотите предоставить им эту возможность, особенно если вы все-таки решили расположить свое меню в верхнем уровне. Функции административного менюКогда вы определитесь с расположением пунктов меню, нужно сообщить WordPress, где они будут располагаться. Это будет происходит в функции, которую вы определите как действие 'admin_menu' (смотрите пример в конце раздела). Меню верхнего уровняПервый шаг - создать пункт меню верхнего уровня, если он все-таки нужен. Нужно использовать функцию add_menu_page: add_menu_page(page_title, menu_title, access_level/capability, file, [function]); Значения параметров:
Теоретически, параметр function является дополнительным. Если он не указан, WordPress предположит, что PHP-файл сгенерирует нужную страницу самостоятельно, без вызова какой-либо функции. Большинство авторов плагинов стараются расположить этот код в функции, расположенной в главном файле плагина. ПодменюПосле создания родительского пункта меню верхнего уровня или выбора его из
существующих можно создать один или несколько пунктов подменю при помощи функции
add_submenu_page(parent, page_title, menu_title, access_level/capability, file, [function]); Значения параметров:
Теоретически, параметр function является дополнительным. Если он не указан, WordPress предположит, что PHP-файл сгенерирует нужную страницу самостоятельно, без вызова какой-либо функции. Большинство авторов плагинов стараются расположить этот код в функции, расположенной в главном файле плагина. Вот короткий пример, демонстрирующий создание пункта меню верхнего уровня, и пункта подменю, заголовок которого отличается от родительского пункта. В этом примере 'my_magic_function' - название функции, отображающей первый пункт подменю: add_menu_page('Page title', 'Top-level menu title', 8, __FILE__, 'my_magic_function');
add_submenu_page(__FILE__, 'Page title', 'Sub-menu title', 8, __FILE__, 'my_magic_function');
Поскольку большинство подменю распологаются в Options, Management или Presentation, WordPress предлагает следующие функции-оболочки для упрощения задачи:
add_options_page(page_title, menu_title, access_level/capability, file, [function]);
add_management_page(page_title, menu_title, access_level/capability, file, [function]);
add_theme_page( page_title, menu_title, access_level/capability, file, [function]); Вставка страницВот пример плагина для WordPress, добавляющего пункты меню в разных местах: <?php
/*
Plugin Name: Menu Test
Plugin URI: http://wordpress.org
Description: Menu Test
Author: Nobody
Author URI: http://example.com
*/
// Вызов функции добавления административных меню
add_action('admin_menu', 'mt_add_pages');
// Сама функция, вызываемая выше
function mt_add_pages() {
// Создание подменю в Options:
add_options_page('Test Options', 'Test Options', 8, 'testoptions', 'mt_options_page');
// Создание подменю в Manage:
add_management_page('Test Manage', 'Test Manage', 8, 'testmanage', 'mt_manage_page');
// Создание нового пункта меню верхнего уровня:
add_menu_page('Test Toplevel', 'Test Toplevel', 8, __FILE__, 'mt_toplevel_page');
// Создание подпункта в свежесозданном меню:
add_submenu_page(__FILE__, 'Test Sublevel', 'Test Sublevel', 8, 'sub-page', 'mt_sublevel_page');
// Создание еще одного подпункта там же:
add_submenu_page(__FILE__, 'Test Sublevel 2', 'Test Sublevel 2', 8, 'sub-page2', 'mt_sublevel_page2');
}
// mt_options_page() выводит содержимое страницы меню Test Options
function mt_options_page() {
echo "<h2>Test Options</h2>";
}
// mt_manage_page() выводит содержимое страницы меню Test Manage
function mt_manage_page() {
echo "<h2>Test Manage</h2>";
}
// mt_toplevel_page() выводит содержимое страницы меню Test Toplevel
function mt_toplevel_page() {
echo "<h2>Test Toplevel</h2>";
}
// mt_sublevel_page() выводит содержимое страницы первого подменю,
// располженной в Test Toplevel
function mt_sublevel_page() {
echo "<h2>Test Sublevel</h2>";
}
// mt_sublevel_page2() выводит содержимое страницы второго подменю,
// расположенной в Test Toplevel
function mt_sublevel_page2() {
echo "<h2>Test Sublevel 2</h2>";
}
?>
Примерная страница менюЭтот пример содержит несколько функций-заготовок вроде mt_options_page, готовых к добавке настоящего содержимого. Нужно превратить их в настоящие страницы меню. Давайте предпотожим, что наш плагин имеет опцию mt_favorite_food, и мы хотим, чтобы пользователь мог ввести название своего любимого блюда на странице настроек. Функция mt_options_page будет нужна для обработки данных, вводимых в форму. Вот эта функция:
// mt_options_page() выводит содержимое страницы меню Test Options
function mt_options_page() {
// Переменные для названий полей и опций
$opt_name = 'mt_favorite_food';
$hidden_field_name = 'mt_submit_hidden';
$data_field_name = 'mt_favorite_food';
// Чтение текущего значения опции из базы данных
$opt_val = get_option( $opt_name );
// Проверяем, пришла ли от пользователя какая-то информация
// Если это так, то скрытое поле должно содержать "Y"
if( $_POST[ $hidden_field_name ] == 'Y' ) {
// Считываем полученное значение POST
$opt_val = $_POST[ $data_field_name ];
// Сохраняем полученное знаение в базу
update_option( $opt_name, $opt_val );
// Выводим пользователю сообщение о успешном сохранении данных
?>
<div class="updated"><p><strong><?php _e('Options saved.', 'mt_trans_domain' ); ?></strong></p></div>
<?php
}
// Отобразим страницу редактирования опций
echo '<div class="wrap">';
// Заголовок
echo "<h2>" . __( 'Menu Test Plugin Options', 'mt_trans_domain' ) . "</h2>";
// Форма опций
?>
<form name="form1" method="post" action="<?php echo str_replace( '%7E', '~', $_SERVER['REQUEST_URI']); ?>">
<input type="hidden" name="<?php echo $hidden_field_name; ?>" value="Y">
<p><?php _e("Favorite Color:", 'mt_trans_domain' ); ?>
<input type="text" name="<?php echo $data_field_name; ?>" value="<?php echo $opt_val; ?>" size="20">
</p><hr />
<p class="submit">
<input type="submit" name="Submit" value="<?php _e('Update Options', 'mt_trans_domain' ) ?>" />
</p>
</form>
</div>
<?php
}
Замечания:
24.01.2010 Последнее редактирование: 2011-01-24 11:05:53 Метки материала: wordpress, плагин, админка, cms, навигация, manual, dolphin, софт, создание плагинов, создание плагинов wordpress Оставьте, пожалуйста, свой комментарий к публикации |
|
© 2007-2012, Дмитрий Скоробогатов.
Разрешается воспроизводить, распространять и/или изменять материалы сайта
в соответствии с условиями GNU Free Documentation License,
версии 1.2 или любой более поздней версии, опубликованной FSF,
если только иное не указано в самих материалах.