Функция add_options_page()
в WordPress используется для добавления дочерних страниц (подменю) в раздел настроек админ-панели. Она позволяет создавать пользовательские страницы настроек, которые можно легко интегрировать в существующий интерфейс админки.
add_options_page( $page_title, $menu_title, $capability, $menu_slug, $function = '' );
Параметры
$page_title
(строка, обязательный): Название страницы настроек, отображаемое в заголовке страницы. Этот текст будет использован в теге<title>
на странице настроек.$menu_title
(строка, обязательный): Название пункта меню, которое будет отображаться в админ-меню.$capability
(строка, обязательный): Уровень доступа, необходимый для просмотра страницы. Обычно этоmanage_options
, что означает доступ только для администраторов.$menu_slug
(строка, обязательный): Уникальный идентификатор меню. Убедитесь, что строка уникальна, чтобы избежать конфликтов с другими пунктами меню.$function
(строка, необязательный): Название функции, которая отвечает за вывод содержимого страницы. Если этот параметр не указан, можно использовать путь от папки плагина до файла с настройками.
Заметки
Функция add_options_page()
является оберткой для функции add_submenu_page()
. Она автоматически устанавливает первый параметр $parent_slug
как 'options-general.php'
, а все остальные параметры передаются как есть. Важно помнить, что функцию необходимо вызывать во время события admin_menu
, чтобы страница настроек была добавлена в админ-панель.
При создании функции, которая отображает содержимое страницы настроек, важно отдельно проверять права доступа пользователя. Это позволяет обеспечить безопасность и корректность отображения страницы.
Возвращаемое значение
Функция возвращает строку или false
. Возвращаемое значение — это hook_suffix
, который представляет собой идентификатор страницы (пункта меню), возвращаемый функцией add_submenu_page()
.
Пример 1: Базовое использование
Этот пример демонстрирует, как добавить новый пункт меню в раздел «Параметры» админ-панели:
add_action('admin_menu', 'genius_plugin_menu');
function genius_plugin_menu() {
add_options_page(
'Мои Настройки', // Заголовок страницы
'Мой Плагин', // Название пункта меню
'manage_options', // Способности пользователя
'genius-plugin', // Уникальный идентификатор меню
'genius_plugin_page' // Функция для отображения содержимого
);
}
function genius_plugin_page() {
echo "Вывод для страницы настроек плагина";
}
В данном примере создается новая страница в разделе настроек админ-панели. При активации плагина будет добавлен пункт меню «Мой Плагин», который ведет на страницу настроек с заголовком «Мои Настройки».
Пример практического использования
Рассмотрим пример использования функции add_options_page()
для добавления страницы настроек для плагина:
Шаг 1: Создайте файл плагина (например, my-plugin.php
), если его еще нет, и добавьте в него следующий код:
<?php
/*
Plugin Name: My Plugin
Description: Пример плагина с настройками.
Version: 1.0
Author: Ваше имя
*/
// Хук для добавления страницы настроек в меню
add_action( 'admin_menu', 'my_plugin_add_settings_page' );
function my_plugin_add_settings_page() {
// Добавляем страницу настроек
add_options_page(
'Настройки My Plugin', // Заголовок страницы
'My Plugin', // Название в меню
'manage_options', // Способности пользователя
'my-plugin-settings', // Уникальный идентификатор
'my_plugin_render_settings_page' // Функция для отображения содержимого
);
}
// Функция для отображения содержимого страницы
function my_plugin_render_settings_page() {
?>
<div class="wrap">
<h1>Настройки My Plugin</h1>
<form method="post" action="options.php">
<?php
// Выводим все необходимые поля для сохранения настроек
settings_fields( 'my_plugin_options_group' );
do_settings_sections( 'my-plugin-settings' );
submit_button();
?>
</form>
</div>
<?php
}
// Регистрация настроек и секций
add_action( 'admin_init', 'my_plugin_register_settings' );
function my_plugin_register_settings() {
register_setting(
'my_plugin_options_group', // Группа настроек
'my_plugin_option_name' // Имя опции
);
add_settings_section(
'my_plugin_settings_section', // Идентификатор секции
'Основные настройки', // Заголовок секции
'my_plugin_settings_section_callback', // Функция отображения описания секции
'my-plugin-settings' // Страница настроек
);
add_settings_field(
'my_plugin_field_id', // Идентификатор поля
'Название опции', // Название поля
'my_plugin_field_callback', // Функция отображения поля
'my-plugin-settings', // Страница настроек
'my_plugin_settings_section' // Секция
);
}
function my_plugin_settings_section_callback() {
echo '<p>Введите настройки для вашего плагина здесь.</p>';
}
function my_plugin_field_callback() {
$value = get_option( 'my_plugin_option_name', '' );
echo '<input type="text" id="my_plugin_field_id" name="my_plugin_option_name" value="' . esc_attr( $value ) . '" />';
}
Шаг 2: Активируйте плагин через админ-панель WordPress. Вы увидите новый пункт в меню настроек, который будет вести на страницу настроек вашего плагина.
Объяснение примера
В данном примере мы создаем плагин с новой страницей настроек. Функция add_options_page()
добавляет новый пункт в меню настроек WordPress, а функция my_plugin_render_settings_page()
отвечает за отображение содержимого этой страницы. Мы также регистрируем настройки и добавляем поля для ввода данных.
Добавление подменю в объектно-ориентированном подходе
class MyPluginSettings {
public function __construct() {
add_action( 'admin_menu', array( $this, 'add_settings_page' ) );
}
public function add_settings_page() {
add_options_page(
'Custom Page Title', // Заголовок страницы настроек
'Custom Plugin Menu', // Текст для пункта меню
'manage_options', // Необходимые права доступа
'custom_plugin_settings', // Уникальный идентификатор страницы
array( $this, 'render_settings_page' ) // Функция для вывода содержимого
);
}
public function render_settings_page() {
echo 'Содержимое страницы настроек вашего плагина.';
}
}
new MyPluginSettings;
Примечания по безопасности и использованию
- Убедитесь, что права доступа пользователя проверяются перед выводом содержимого страницы настроек, чтобы предотвратить несанкционированный доступ.
- Используйте уникальные идентификаторы для
$menu_slug
, чтобы избежать конфликтов с другими плагинами или темами. - Вместо использования волшебной константы
__FILE__
, указывайте полный путь к файлу, чтобы избежать проблем с формированием URL.
Заключение
Функция add_options_page()
предоставляет удобный способ интеграции пользовательских настроек в админ-панель WordPress, обеспечивая гибкость и расширяемость интерфейса администрирования.