WordPress как на ладони
Плагин рекламы для WordPress wordpress jino

add_options_page() WP 1.5

Добавляет дочернюю страницу (подменю) в меню админ-панели «Параметры» (Settings).

Функцию нужно вызывать во время события admin_menu.

Работает на основе: add_submenu_page()

Хуков нет.

Возвращает

Строку. hook_suffix вставленной страницы (пункта меню), то что возвращает функция add_submenu_page().

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

add_options_page( $page_title, $menu_title, $capability, $menu_slug, $function );
$page_title(строка) (обязательный)
Текст, который будет использован в теге title на странице, настроек.
$menu_title(строка) (обязательный)
Текст, который будет использован в качестве называния для пункта меню.
$capability(строка) (обязательный)
Название права доступа для пользователя, чтобы ему был показан этот пункт меню. Таблицу возможностей смотрите здесь. Этот параметр отвечает и за доступ к странице этого пункта меню.
$menu_slug(строка) (обязательный)
Идентификатор меню. Нужно вписывать уникальную строку, пробелы не допускаются.Можно, также указать путь от папки плагина до файла, который будет отвечать за страницу настроек плагина, пр. my-plugin/options.php. В этом случае, следующий параметр указывать не обязательно.
$function(строка)
Название функции, которая отвечает за код страницы этого пункта меню.
По умолчанию: ''

Примеры

#1 Базовое использование

Пример показывает, как добавить дополнительный пункт меню в раздел "Параметры" меню админ-панели.

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

function my_plugin_page(){
	echo "Вывод для страницы настроек плагина";
}

#2 Добавление подменю в ООП

Этот пример показывает как добавить подменю в раздел Параметры в PHP Классах:

class options_page {
	function __construct() {
		add_action( 'admin_menu', array( $this, 'admin_menu' ) );
	}
	function admin_menu () {
		add_options_page( 'Page Title','Circle Tree Login','manage_options','options_page_slug', array( $this, 'settings_page' ) );
	}
	function  settings_page () {
		echo 'Тут контент страницы настроек';
	}
}
new options_page;

Заметки

  1. Это функция является оберткой для функции add_submenu_page(). Для которой указывается первый параметр $parent_slug как 'options-general.php', а все остальные параметры просто передаются как есть.

  2. Функция которая выводит контент для страницы пункта меню должна проверять доступ пользователя (возможность) отдельно.

  3. Если в параметре $menu_slug не используйте волшебную константу __FILE__ и пробелы.

Код add options page: wp-admin/includes/plugin.php WP 4.8

<?php
function add_options_page( $page_title, $menu_title, $capability, $menu_slug, $function = '' ) {
	return add_submenu_page( 'options-general.php', $page_title, $menu_title, $capability, $menu_slug, $function );
}

Cвязанные функции

Из метки: Меню администрирования (admin menu)

Еще из раздела: Админ-панель

add_options_page 3 комментария
  • Александр cайт: brainierweb.com

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

    Допустим мой плагин изменяет постоянные ссылки. И там всего два параметра. Как вывести поля для настройки на страницу options-permalink.php?

    Ответить2 года назад #
    • Kama4398

      Используйте для этого функции add_settings_section() и add_settings_field(), подробнее все API.

      Вот, для примера, фрагмент моего плагина kama_thumbnail там как раз на страницу media настроек добавляется блок настроек:

      add_action( 'admin_init', 'admin_options' );
      function admin_options(){
      	// Добавляем блок опций на базовую страницу "Чтение"
      	add_settings_section(
      		'kama_thumbnail', // секция
      		'Настройки Kama Thumbnail',
      		'',
      		'media' // страница
      	);
      
      	// Добавляем поля опций. Указываем название, описание, 
      	// функцию выводящую html код поля опции.
      	add_settings_field(
      		'kt_options_field',
      		'Действия: <br><br> <a href="?kt_clear=clear_cache">Очистить кеш картинок</a> <br><br> <a href="?kt_clear=del_customs">Удалить произвольные поля</a>',
      		array( $this, 'options_field'), // можно указать ''
      		'media', // страница
      		'kama_thumbnail' // секция
      	);
      
      	// Регистрируем опции, чтобы они сохранялись при отправке 
      	// $_POST параметров и чтобы callback функции опций выводили их значение.
      	register_setting( 'media', self::$opt_name );
      }
      Ответить2 года назад #
      2
  • Возможно ли как-нибудь указать порядок (номер в списке) создаваемого пункта?

    Ответить14 дней назад #

Здравствуйте, !

Ваш комментарий