arthur-eudeline
3/3/2018 - 11:30 AM

Admin Notices

PENSER UPDATE OPTION AU LIEU DE PUSH DANS UN ARRAY CLASSIQUE

<?php
if(!function_exists('admin_notice_render')){
	$notices_array = array();

	/**
	 * Genère le code HTML d'une notification pour l'administration de WordPress
	 *
	 * @param  string $message Message textuel à afficher dans la notification
	 * @param  array  $link    Dans la case "href" mettre l'adresse du lien vers lequel renvoyer et dans la case "content" mettre le texte du lien
	 * @param  string $type    Type de la notification (error, warning, success ou info)
	 * @param  bool   $is_dismissible	Si la notification doit pouvoir être desactivée
	 */
	function admin_notice_render(string $message, array $link = array(), string $type = 'error', bool $is_dismissible = true)
	{
	    $class = "notice";
	    if ($type === "error") {
	        $class .= " notice-error";
	    } elseif ($type === "warning") {
	        $class .= " notice-warning";
	    } elseif ($type === "sucess") {
	        $class .= " notice-success";
	    } elseif ($type === "info") {
	        $class .= " notice-info";
	    }

	    if ($is_dismissible) {
	        $class .= " is-dismissible";
	    }

	    $content = "<p>".$message."</p>";

	    if (isset($link["href"]) && isset($link["content"])) {
	        $content .= "<p><a href=\"". $link["href"] ."\" target=\"_blank\">". $link["content"] ."</a></p>";
	    }

	    $output = "<div class=\"". $class ."\"> ". $content ." </div>";
	    echo $output;

	}
}
?>
<?php 

	wp_admin_notice_enqueue("Une erreur est survenue", ["href" => "mon-url", "content" => "le texte de mon lien"], "error", true);

?>
<?php
if(!function_exists('wp_admin_notice_enqueue')){
	$notices_array = array();

	/**
	 * Genère le code HTML d'une notification pour l'administration de WordPress
	 *
	 * @param  string $message Message textuel à afficher dans la notification
	 * @param  array  $link    Dans la case "href" mettre l'adresse du lien vers lequel renvoyer et dans la case "content" mettre le texte du lien
	 * @param  string $type    Type de la notification (error, warning, success ou info)
	 * @param  bool   $is_dismissible	Si la notification doit pouvoir être desactivée
	 */
	function wp_admin_notice_enqueue(string $message, array $link = array(), string $type = 'error', bool $is_dismissible = true)
	{
	    global $notices_array;

	    $class = "notice";
	    if ($type === "error") {
	        $class .= " notice-error";
	    } elseif ($type === "warning") {
	        $class .= " notice-warning";
	    } elseif ($type === "sucess") {
	        $class .= " notice-success";
	    } elseif ($type === "info") {
	        $class .= " notice-info";
	    }

	    if ($is_dismissible) {
	        $class .= " is-dismissible";
	    }

	    $content = "<p>".$message."</p>";

	    if (isset($link["href"]) && isset($link["content"])) {
	        $content .= "<p><a href=\"". $link["href"] ."\" target=\"_blank\">". $link["content"] ."</a></p>";
	    }

	    $output = "<div class=\"". $class ."\"> ". $content ." </div>";
	    array_push($notices_array, $output);

	}
}

if(!function_exists('wp_admin_notice_display')){
	/**
	 * Affiche toutes les notifications les unes à la suite des autres
	 */
	function wp_admin_notice_display()
	{
	    global $notices_array;
	    foreach ($notices_array as $notice) {
	        echo $notice;
	    }
	}
	add_action('admin_notices', 'wp_admin_notice_display');
}
?>