wp_get_admin_notice

The timeline below displays how wordpress function wp_get_admin_notice has changed across different WordPress versions. If a version is not listed, refer to the next available version below.

WordPress Version: 6.4

/**
 * Creates and returns the markup for an admin notice.
 *
 * @since 6.4.0
 *
 * @param string $message The message.
 * @param array  $args {
 *     Optional. An array of arguments for the admin notice. Default empty array.
 *
 *     @type string   $type               Optional. The type of admin notice.
 *                                        For example, 'error', 'success', 'warning', 'info'.
 *                                        Default empty string.
 *     @type bool     $dismissible        Optional. Whether the admin notice is dismissible. Default false.
 *     @type string   $id                 Optional. The value of the admin notice's ID attribute. Default empty string.
 *     @type string[] $additional_classes Optional. A string array of class names. Default empty array.
 *     @type string[] $attributes         Optional. Additional attributes for the notice div. Default empty array.
 *     @type bool     $paragraph_wrap     Optional. Whether to wrap the message in paragraph tags. Default true.
 * }
 * @return string The markup for an admin notice.
 */
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);
    /**
     * Filters the arguments for an admin notice.
     *
     * @since 6.4.0
     *
     * @param array  $args    The arguments for the admin notice.
     * @param string $message The message for the admin notice.
     */
    $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: The "type" key. */
                __('The %s key must be a string without spaces.'),
                '<code>type</code>'
            ), '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 = "<p>{$message}</p>";
    }
    $markup = sprintf('<div %1$sclass="%2$s"%3$s>%4$s</div>', $id, $classes, $attributes, $message);
    /**
     * Filters the markup for an admin notice.
     *
     * @since 6.4.0
     *
     * @param string $markup  The HTML markup for the admin notice.
     * @param string $message The message for the admin notice.
     * @param array  $args    The arguments for the admin notice.
     */
    return apply_filters('wp_admin_notice_markup', $markup, $message, $args);
}