add_settings_section()

Добавляет новый раздел на страницу настроек
Функция WordPress
INT 2.7.0
WordPress Icon

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

Функция add_settings_section() используется для добавления нового раздела на страницу настроек. Она позволяет разделить настройки на несколько логических групп, что делает страницу более структурированной и удобной для пользователя.

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

add_settings_section( string $id, string $title, callable $callback, string $page, array $args = array() )

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

  • $id (строка, обязательный): Уникальное имя раздела. Используется в атрибуте id тегов.
  • $title (строка, обязательный): Заголовок раздела. Отображается в качестве заголовка раздела.
  • $callback (callable, обязательный): Функция, которая выводит контент в верхней части раздела (между заголовком и полями).
  • $page (строка, обязательный): Идентификатор страницы настроек, на которой будет отображаться раздел. Встроенные страницы включают ‘general’, ‘reading’, ‘writing’, ‘discussion’, ‘media’ и т.д. Можно создать свою собственную страницу с помощью функции add_options_page().
  • $args (массив, необязательный): Аргументы, используемые для создания раздела настроек.

Аргументы $args могут содержать следующие ключи:

  • before_section (строка HTML): HTML-контент, который будет добавлен перед выводом раздела. В качестве %s будет подставлено имя класса раздела.
  • after_section (строка HTML): HTML-контент, который будет добавлен после вывода раздела.
  • section_class (строка): Имя класса, которое будет использоваться для раздела. По умолчанию: пустой массив.
<?php
function my_settings_section_callback() {
    echo '<p>This is a custom section.</p>';
}
add_settings_section(
    'my_section',
    'My Section',
    'my_settings_section_callback',
    'my_settings_page',
    array(
        'before_section' => '<p>This is some content before the section.</p>',
        'after_section' => '<p>This is some content after the section.</p>',
        'section_class' => 'my-section-class'
    )
);
?>

В этом примере мы создаем новый раздел с идентификатором ‘my_section’ и заголовком ‘My Section’. Функция my_settings_section_callback() будет вызываться для вывода контента раздела.

Мы также указываем, что раздел должен быть отображен на странице настроек с идентификатором ‘my_settings_page’. Дополнительно мы добавляем HTML-контент до и после раздела, а также задаем имя класса для раздела.

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

Создание новой секции на странице настроек


function my_settings_section_callback() {
    echo 'This is the content of my settings section.';
}
add_settings_section( 'my_settings_section', 'My Settings Section', 'my_settings_section_callback', 'my_settings_page' );

В этом примере мы создаем новую секцию на странице настроек с идентификатором «my_settings_section» и заголовком «My Settings Section». Функция «my_settings_section_callback» будет вызвана для вывода контента в верхней части секции.

Отображение контента в верхней части секции


function my_settings_section_callback() {
    echo 'This is the content of my settings section.';
}
add_settings_section( 'my_settings_section', 'My Settings Section', 'my_settings_section_callback', 'my_settings_page' );

В этом примере мы определяем функцию «my_settings_section_callback», которая будет вызвана для вывода контента в верхней части секции. Функция просто выводит текст «This is the content of my settings section».

Добавление HTML-кода перед выводом секции


function my_settings_section_callback() {
    echo '<p>This is some HTML content before the section.</p>';
}
add_settings_section( 'my_settings_section', 'My Settings Section', 'my_settings_section_callback', 'my_settings_page' );

В этом примере мы добавляем HTML-код «<p>This is some HTML content before the section.</p>» перед выводом секции. Этот код будет отображаться перед контентом секции.

Добавление HTML-кода после вывода секции


function my_settings_section_callback() {
    echo '<p>This is some HTML content after the section.</p>';
}
add_settings_section( 'my_settings_section', 'My Settings Section', 'my_settings_section_callback', 'my_settings_page' );

В этом примере мы добавляем HTML-код «<p>This is some HTML content after the section.</p>» после вывода секции. Этот код будет отображаться после контента секции.

Использование пользовательского класса для секции


function my_settings_section_callback() {
    echo 'This is the content of my settings section.';
}
add_settings_section( 'my_settings_section', 'My Settings Section', 'my_settings_section_callback', 'my_settings_page', array( 'section_class' => 'my-section-class' ) );

В этом примере мы добавляем пользовательский класс «my-section-class» для секции. Этот класс будет применяться к HTML-элементу секции, позволяя нам стилизовать ее с помощью CSS.

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

Как добавить новую секцию на страницу настроек?

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

Пример кода:


function my_settings_section_callback() {
    echo 'This is the content of my settings section.';
}
add_action( 'admin_init', 'my_settings_section' );
function my_settings_section() {
    add_settings_section( 'my_section', 'My Section', 'my_settings_section_callback', 'general' );
}

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

Заголовок секции на странице настроек можно изменить, передав соответствующий параметр в функцию add_settings_section(). Этот параметр должен быть строкой и содержать отформатированный заголовок секции.

Пример кода:


function my_settings_section_callback() {
    echo 'This is the content of my settings section.';
}
add_action( 'admin_init', 'my_settings_section' );
function my_settings_section() {
    add_settings_section( 'my_section', 'My Custom Section Title', 'my_settings_section_callback', 'general' );
}

Как добавить контент в верхней части секции на странице настроек?

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

Пример кода:


function my_settings_section_callback() {
    echo 'This is the content of my settings section.';
}
add_action( 'admin_init', 'my_settings_section' );
function my_settings_section() {
    add_settings_section( 'my_section', 'My Section', 'my_settings_section_callback', 'general' );
}

Как указать на какой странице настроек показывать секцию?

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

Например, чтобы показать секцию на странице «Общие настройки», нужно вызвать функцию следующим образом:

add_settings_section( 'my_section', 'Моя секция', 'my_section_callback', 'general' );

Как добавить HTML-контент перед секцией?

Для добавления HTML-контента перед секцией, можно использовать аргумент $args при вызове функции add_settings_section(). В этом аргументе нужно указать значение для ключа before_section, которое будет содержать нужный HTML-код.

Например, чтобы добавить HTML-контент перед секцией, можно вызвать функцию следующим образом:

$args = array(
    'before_section' => '<p>Это HTML-контент перед секцией</p>'
);
add_settings_section( 'my_section', 'Моя секция', 'my_section_callback', 'general', $args );

Как добавить HTML-контент после секции?

Для добавления HTML-контента после секции, также можно использовать аргумент $args при вызове функции add_settings_section(). В этом аргументе нужно указать значение для ключа after_section, которое будет содержать нужный HTML-код.

Например, чтобы добавить HTML-контент после секции, можно вызвать функцию следующим образом:

$args = array(
    'after_section' => '<p>Это HTML-контент после секции</p>'
);
add_settings_section( 'my_section', 'Моя секция', 'my_section_callback', 'general', $args );

Как изменить класс секции?

Для изменения класса секции, можно использовать аргумент $args при вызове функции add_settings_section(). В этом аргументе нужно указать значение для ключа section_class, которое будет содержать нужный класс.

Например, чтобы изменить класс секции, можно вызвать функцию следующим образом:

$args = array(
    'section_class' => 'my-section-class'
);
add_settings_section( 'my_section', 'Моя секция', 'my_section_callback', 'general', $args );

Функция add_settings_section() позволяет добавить новую секцию на страницу настроек WordPress. С ее помощью можно указать на какой странице показывать секцию, добавить HTML-контент перед и после секцией, а также изменить класс секции. Это очень удобно для создания настраиваемых разделов на странице настроек и улучшения пользовательского опыта.

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

  • Функция add_settings_field(): Добавляет новое поле на страницу настроек.
  • Функция register_setting(): Регистрирует настройку и её функцию санитизации.
  • Функция do_settings_sections(): Выводит все секции настроек, добавленные на определённой странице настроек.
  • Функция settings_fields(): Выводит скрытые поля формы на странице настроек.
  • Хук admin_init: Срабатывает в начале инициализации административной панели.
  • Хук admin_menu: Срабатывает после создания основной структуры меню административной панели.
  • Класс WP_Screen: Управляет административными экранами и их элементами.
Обсуждение