WP_GET_ADMIN_NOTICE() │ WP 6.4.0: функция wp_get_admin_notice() для создания уведомлений в админ-панели WordPress

# WP_GET_ADMIN_NOTICE() │ WP 6.4.0

Функция wp_get_admin_notice() создаёт и возвращает разметку для уведомления в админ-панели WordPress.

**Используется в:** wp_admin_notice()

**Временные затраты:** 
- 1 раз — 0.000071 сек (очень быстро)
- 50000 раз — 0.10 сек (световая скорость)

## Хуки функции

- wp_admin_notice_args
- wp_admin_notice_markup

## Возвращаемое значение

Функция возвращает строку — разметку для уведомления.

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

```php
wp_get_admin_notice( $message, $args );

Аргументы

  • $message (строка) (обязательный). Сообщение, которое будет отображаться в уведомлении.

  • $args (массив) (необязательный). Массив аргументов для уведомления.

По умолчанию: пустой массив

  • type (строка) (необязательный). Тип уведомления: например, 'error', 'success', 'warning', 'info'.
    По умолчанию: пустая строка

  • dismissible (true|false) (необязательный). Можно ли закрыть уведомление.
    По умолчанию: false

  • id (строка) (необязательный). Значение а��рибута ID уведомления.
    По умолчанию: пустая строка

  • additional_classes (массив строк) (необязательный). Дополнительные имена классов.
    По умолчанию: пустой массив

  • attributes (массив строк) (необязательный). Дополнительные атрибуты для блока уведомления.
    По умолчанию: пустой массив

  • paragraph_wrap (true|false) (необязательный). Оборачивать ли сообщение в теги параграфа.
    По умолчанию: true

Примеры

Пример 1. Сбор и отображение уведомлений

$messages = [];

if ('some condition') {
    $messages[] = wp_get_admin_notice('Примечание 1', ['type' => 'error']);
}

if ('some condition') {
    $messages[] = wp_get_admin_notice('Примечание 2', ['type' => 'error']);
}

// Ваша дополнительная логика кода

echo implode("n", $messages);

Изменения

  • С версии 6.4.0 — Функция была введена.

Код функции

function wp_get_admin_notice( $message, $args = array() ) {
    $defaults = array(
        'type'               => '',
        'dismissible'        => false,
        'id'                 => '',
        'additional_classes' => array(),
        'attributes'         => array(),
        'paragraph_wrap'     => true,
    );

    $args = wp_parse_args( $args, $defaults );

    // Фильтр аргументов
    $args = apply_filters('wp_admin_notice_args', $args, $message);
    $id = '';
    $classes = 'notice';
    $attributes = '';

    if (is_string($args['id'])) {
        $trimmed_id = trim($args['id']);
        if ('' !== $trimmed_id) {
            $id = 'id="' . $trimmed_id . '" ';
        }
    }

    if (is_string($args['type'])) {
        $type = trim($args['type']);
        if (str_contains($type, ' ')) {
            _doing_it_wrong(
                __FUNCTION__,
                sprintf(
                    /* translators: %s: Ключ "type". */
                    __('Ключ %s должен быть строкой без пробелов.'),
                    'type'
                ),
                '6.4.0'
            );
        }

        if ('' !== $type) {
            $classes .= ' notice-' . $type;
        }
    }

    if (true === $args['dismissible']) {
        $classes .= ' is-dismissible';
    }

    if (is_array($args['additional_classes']) && !empty($args['additional_classes'])) {
        $classes .= ' ' . implode(' ', $args['additional_classes']);
    }

    if (is_array($args['attributes']) && !empty($args['attributes'])) {
        $attributes = '';
        foreach ($args['attributes'] as $attr => $val) {
            if (is_bool($val)) {
                $attributes .= $val ? ' ' . $attr : '';
            } elseif (is_int($attr)) {
                $attributes .= ' ' . esc_attr(trim($val));
            } elseif ($val) {
                $attributes .= ' ' . $attr . '="' . esc_attr(trim($val)) . '"';
            }
        }
    }

    if (false !== $args['paragraph_wrap']) {
        $message = "

$message

"; } $markup = sprintf('
%4$s
', $id, $classes, $attributes, $message); // Фильтр разметки уведомления return apply_filters('wp_admin_notice_markup', $markup, $message, $args); }

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

  • Управление админкой

    • get_submit_button()
    • submit_button()
    • wp_admin_notice()
  • Меню админки

    • add_menu_page()
    • add_meta_box()
    • add_options_page()
    • add_submenu_page()
    • add_theme_page()

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *