add_options_page()

Добавляет подменю к главному меню "Настройки"
Функция WordPress
INT 1.5.0
WordPress Icon

Описание функции

Функция add_options_page() добавляет подменю в основное меню «Настройки» в административной панели WordPress.

Она позволяет разработчикам добавлять свои собственные страницы настроек в административную панель WordPress, чтобы пользователи могли настраивать параметры и функциональность своих сайтов.

Использование

add_options_page( string $page_title, string $menu_title, string $capability, string $menu_slug, callable $callback = '', int $position = null ): string|false

Функция add_options_page() принимает следующие параметры:

  • $page_title (обязательный) — текст, который будет отображаться в тегах <title> на странице, когда выбрано подменю.
  • $menu_title (обязательный) — текст, который будет использоваться для отображения в меню.
  • $capability (обязательный) — требуемая возможность для отображения этого меню пользователю.
  • $menu_slug (обязательный) — уникальное имя для ссылки на это меню.
  • $callback (необязательный) — функция, которая будет вызвана для вывода содержимого на этой странице. По умолчанию: пустая строка.
  • $position (необязательный) — позиция в порядке меню, в которой этот элемент должен появиться. По умолчанию: null.

Функция возвращает хук страницы, или false, если у пользователя нет необходимых возможностей.

<?php
/**
 * Добавляет страницу настроек в меню "Настройки".
 *
 * @param string $page_title   Текст для отображения в тегах <title> на странице.
 * @param string $menu_title   Текст для отображения в меню.
 * @param string $capability   Требуемая возможность для отображения меню.
 * @param string $menu_slug    Уникальное имя ссылки на меню.
 * @param callable $callback   Функция для вывода содержимого страницы (необязательно).
 * @param int $position        Позиция в порядке меню (необязательно).
 * @return string|false        Хук страницы или false, если у пользователя нет необходимых возможностей.
 */
add_options_page( 'Моя страница настроек', 'Настройки', 'manage_options', 'my-settings', 'my_settings_page' );
/**
 * Функция для вывода содержимого страницы настроек.
 */
function my_settings_page() {
    // Вывод содержимого страницы настроек
}
?>

Примеры использования

Добавление подраздела на страницу настроек


/**
 * Добавляет подраздел в главное меню "Настройки".
 */
function add_my_submenu_page() {
    add_options_page(
        'Моя страница настроек', // Заголовок страницы
        'Мой подраздел', // Текст для меню
        'manage_options', // Требуемая возможность
        'my-submenu', // Уникальный идентификатор подраздела
        'my_submenu_callback' // Функция для вывода содержимого страницы
    );
}
add_action( 'admin_menu', 'add_my_submenu_page' );

Отображение содержимого подраздела


/**
 * Функция для вывода содержимого страницы подраздела.
 */
function my_submenu_callback() {
    echo '<div class="wrap">';
    echo '<h1>Моя страница настроек</h1>';
    echo '<p>Это содержимое моего подраздела.</p>';
    echo '</div>';
}

Установка прав доступа


/**
 * Добавляет подраздел в главное меню "Настройки" только для пользователей с возможностью "manage_options".
 */
function add_my_submenu_page() {
    add_options_page(
        'Моя страница настроек', // Заголовок страницы
        'Мой подраздел', // Текст для меню
        'manage_options', // Требуемая возможность
        'my-submenu', // Уникальный идентификатор подраздела
        'my_submenu_callback' // Функция для вывода содержимого страницы
    );
}
add_action( 'admin_menu', 'add_my_submenu_page' );

Изменение порядка отображения


/**
 * Добавляет подраздел в главное меню "Настройки" и устанавливает его позицию вторым.
 */
function add_my_submenu_page() {
    add_options_page(
        'Моя страница настроек', // Заголовок страницы
        'Мой подраздел', // Текст для меню
        'manage_options', // Требуемая возможность
        'my-submenu', // Уникальный идентификатор подраздела
        'my_submenu_callback', // Функция для вывода содержимого страницы
        2 // Позиция в меню
    );
}
add_action( 'admin_menu', 'add_my_submenu_page' );

Уникальный идентификатор подраздела


/**
 * Добавляет подраздел в главное меню "Настройки" с уникальным идентификатором "my-submenu".
 */
function add_my_submenu_page() {
    add_options_page(
        'Моя страница настроек', // Заголовок страницы
        'Мой подраздел', // Текст для меню
        'manage_options', // Требуемая возможность
        'my-submenu', // Уникальный идентификатор подраздела
        'my_submenu_callback' // Функция для вывода содержимого страницы
    );
}
add_action( 'admin_menu', 'add_my_submenu_page' );

Вопросы и ответы

Как добавить подменю в раздел настроек?

Для добавления подменю в раздел настроек в WordPress используется функция add_options_page(). Она позволяет создать новый пункт меню в разделе «Настройки» и добавить подменю с собственным содержимым.

Пример использования функции add_options_page():


add_action( 'admin_menu', 'my_plugin_menu' );
function my_plugin_menu() {
    add_options_page( 'My Plugin Settings', 'My Plugin', 'manage_options', 'my-plugin', 'my_plugin_page' );
}
function my_plugin_page() {
    // Содержимое страницы настроек плагина
}

В данном примере мы создаем пункт меню с названием «My Plugin» и добавляем подменю в раздел «Настройки». Функция add_options_page() принимает несколько параметров, включая заголовок страницы, название меню, необходимые права доступа и функцию, которая будет выводить содержимое страницы настроек.

Как указать права доступа для отображения подменю?

Для того чтобы указать права доступа, необходимые для отображения подменю, используется параметр $capability функции add_options_page(). Этот параметр определяет, какие пользователи смогут видеть и использовать подменю.

Пример использования параметра $capability:


add_action( 'admin_menu', 'my_plugin_menu' );
function my_plugin_menu() {
    add_options_page( 'My Plugin Settings', 'My Plugin', 'manage_options', 'my-plugin', 'my_plugin_page' );
}

В данном примере мы указываем, что для отображения подменю пользователю должны быть права доступа manage_options. Это означает, что только администраторы сайта смогут видеть и использовать подменю.

Как задать уникальный идентификатор для подменю?

Для задания уникального идентификатора для подменю используется параметр $menu_slug функции add_options_page(). Этот параметр должен быть уникальным для каждого подменю, чтобы WordPress мог правильно идентифицировать его.

Пример использования параметра $menu_slug:


add_action( 'admin_menu', 'my_plugin_menu' );
function my_plugin_menu() {
    add_options_page( 'My Plugin Settings', 'My Plugin', 'manage_options', 'my-plugin', 'my_plugin_page' );
}

В данном примере мы задаем уникальный идентификатор для подменю — my-plugin. Этот идентификатор будет использоваться для ссылок на подменю и его идентификации в коде.

Как указать функцию для вывода содержимого страницы подменю?

Для указания функции, которая будет выводить содержимое страницы подменю, необходимо передать ее в качестве аргумента $callback при вызове функции add_options_page().

Пример кода:


function my_custom_page_content() {
    echo '<h2>Welcome to My Custom Page!</h2>';
}
add_options_page( 'My Custom Page', 'Custom Page', 'manage_options', 'my-custom-page', 'my_custom_page_content' );

Как изменить порядок отображения подменю в меню настроек?

Для изменения порядка отображения подменю в меню настроек необходимо передать соответствующее значение в аргументе $position при вызове функции add_options_page().

Пример кода:


add_options_page( 'My Custom Page', 'Custom Page', 'manage_options', 'my-custom-page', 'my_custom_page_content', 10 );

Как получить хук страницы подменю?

Для получения хука страницы подменю можно использовать функцию add_action() и указать соответствующий хук в качестве первого аргумента, а функцию, которую необходимо выполнить, в качестве второго аргумента.

Пример кода:


function my_custom_page_hook() {
    // Ваш код
}
add_action( 'admin_menu', 'my_custom_page_hook' );

Как проверить, имеет ли пользователь необходимые права доступа для отображения подменю?

Для проверки, имеет ли пользователь необходимые права доступа для отображения подменю, можно использовать функцию current_user_can(). Она принимает один аргумент — строку, представляющую необходимую для доступа к подменю роль или способность.


if ( current_user_can( 'manage_options' ) ) {
    // Пользователь имеет необходимые права доступа
} else {
    // Пользователь не имеет необходимых прав доступа
}

Как удалить подменю из меню настроек?

Для удаления подменю из меню настроек можно использовать функцию remove_submenu_page(). Она принимает два аргумента — строку, представляющую родительское меню, и строку, представляющую подменю, которое нужно удалить.


remove_submenu_page( 'options-general.php', 'my-submenu' );

Как изменить заголовок страницы подменю?

Для изменения заголовка страницы подменю можно использовать хук admin_title. Он позволяет изменить заголовок страницы перед его выводом.


add_filter( 'admin_title', 'my_admin_title', 10, 2 );
function my_admin_title( $admin_title, $title ) {
    if ( $title === 'My Submenu' ) {
        $admin_title = 'New Submenu Title';
    }
    return $admin_title;
}

Функция add_options_page() позволяет добавить подменю в главное меню настроек WordPress. Она принимает несколько параметров, включая заголовок страницы, текст для меню, необходимые права доступа и функцию для вывода содержимого страницы. Функция возвращает хук страницы или false, если у пользователя нет необходимых прав доступа.
Для проверки прав доступа пользователя к подменю можно использовать функцию current_user_can(), а для удаления подменю из меню настроек — функцию remove_submenu_page(). Заголовок страницы подменю можно изменить с помощью хука admin_title.

Связанные элементы

  • Функция add_menu_page(): добавляет новый пункт меню в административной панели WordPress.
  • Функция add_submenu_page(): добавляет подпункт меню в административной панели WordPress.
  • Функция register_setting(): регистрирует новую настройку, которая будет использоваться на странице опций.
  • Функция add_action(): добавляет действие к указанному хуку.
  • Функция do_action(): выполняет все действия, привязанные к указанному хуку.
  • Хук admin_menu: вызывается при создании меню административной панели.
  • Хук admin_init: вызывается при инициализации административной панели.
  • Хук admin_enqueue_scripts: вызывается при загрузке скриптов и стилей в административной панели.
  • Класс WP_Screen: предоставляет информацию о текущем экране административной панели.
Обсуждение