add_settings_section()
Создает новый блок (секцию), в котором выводятся поля настроек. Т.е. в этот блок затем добавляются опции, с помощью add_settings_field().
Такой блок вы можете видеть на страницах настроек WordPress или плагинов - это группы настроек разделенные заголовком.
При создании плагина, можно просто создать новую секцию в уже существующую страницу настроек WordPress, вместо того, чтобы создавать отдельную страницу настроек. Это немного упростит создание плагина, и избавит от лишнего пункта административного меню. Пользователям укажете, что плагин настраивается на привычной странице настроек WordPress.
Это одна из группы функций из API настроек, работает в связке с ними.
Хуков нет.
Возвращает
null
. Ничего не возвращает.
Использование
add_settings_section( $id, $title, $callback, $page );
- $id(строка) (обязательный)
- Идентификатор секции, по которому нужно "цеплять" поля к секции. Строка, которая будет использована для id атрибутов тегов.
- $title(строка) (обязательный)
- Заголовок секции.
- $callback(callable) (обязательный)
Коллбэк (функция), которая заполняет секцию описанием. Вызывается между заголовком и полями секции, смотрите: do_settings_sections().
Если нужно пропустить этот параметр, то укажите вместо него строку
'__return_empty_string'
.- $page(строка) (обязательный)
Страница на которой выводить секцию.
Должен совпадать с параметром $page в do_setting_sections( $page );
Или может совпадать с параметром $menu_slug из add_menu_page(), add_theme_page(), add_submenu_page().
Обычно $page и $menu_slug называются одинаково.
Примеры ярлыков страниц WP:
general
,reading
,writing
,discussion
,media
, и т.д.- $args(массив) (WP 6.1)
Аргументы, используемые для создания раздела настроек. См. do_settings_sections().
Возможные элементы массива:
- before_section(string) - HTML перед HTML секции.
- after_section(string) - HTML после HTML секции. По умолчанию:
''
. - section_class(string) - Имя класса для секции. Если этот параметр указан, то в
before_section
нужно указать плейсхолдер%s
для sprintf() на месте которого появится указанный здесь класс. По умолчанию:''
.
По умолчанию: []
Примеры
#1 Демо
add_settings_section( 'eg_setting_section', __( 'Example settings section in reading', 'textdomain' ), 'wpdocs_setting_section_callback_function', 'reading' ); /** * Settings section display callback. * * @param array $args Display arguments. */ function wpdocs_setting_section_callback_function( $args ) { // echo section intro text here // id: eg_setting_section echo '<p>id: ' . esc_html( $args['id'] ) . '</p>'; // title: Example settings section in reading echo '<p>title: ' . apply_filters( 'the_title', $args['title'] ) . '</p>'; // callback: eg_setting_section_callback_function echo '<p>callback: ' . esc_html( $args['callback'] ) . '</p>'; }
#2 Пример использования в ООП виде (с классом php)
class custom_setting { function __construct() { /** * register wp_setting_init to the admin_init action hook */ add_action('admin_init', array($this,'wp_setting_init')); } function wp_setting_init() { // register a new setting for "reading" page register_setting('reading', 'page_limit'); // register a new section in the "reading" page add_settings_section( 'wp_custom_setting_section', 'WP Custom Setting Section', array($this,'wp_custom_setting_section_cb'), 'reading' ); } /** * callback functions */ // section content cb function wp_custom_setting_section_cb() { esc_html_e('Page limit is 10','text-domain'); } } new custom_setting();
#3 Еще примеры смотрите
Смотрите в примерах, на странице API настроек.
Заметки
- Global. Массив. $wp_settings_sections Storage array of all settings sections added to admin pages.
Список изменений
С версии 2.7.0 | Введена. |
С версии 6.1.0 | Added an $args parameter for the section's HTML wrapper and class name. |