Zeigt das jQuery-Ereignis “admin_notice” -Fehlermeldung an

Ich möchte eine admin_notice-Fehlermeldung auf der benutzerdefinierten Admin-Seite meines Plugins anzeigen – aber ich möchte, dass sie nur von einem jQuery-Ereignis angezeigt wird.

Alle meine jQuery funktioniert. Ich kann Daten senden, Warnungen anzeigen, Daten empfangen. Aber ich kann die Fehlermeldung nicht vom jQuery-Ereignis erhalten.

Dies zeigt die Fehlermeldung auf jedem Bildschirm im Dashboard an.

add_action('admin_notices', 'my_error_notice'); function my_error_notice () { echo '

This is my error message.

'; }

Dies zeigt die Fehlermeldung nur auf meiner Admin-Seite an.

 add_action('admin_notices', 'my_error_notice'); function my_error_notice () { global $my_admin_page; $screen = get_current_screen(); if ( $screen->id == $my_admin_page ) { echo '

This is my error message.

'; } else { return; } }

Ich möchte nur die Fehlermeldung von einem jQuery-Ereignis anzeigen.

 add_action('wp_ajax_test_function', 'test_function'); function test_function() { add_action('admin_notices', 'my_error_notice'); } function my_error_notice () { global $my_admin_page; $screen = get_current_screen(); if ( $screen->id == $my_admin_page ) { echo '

This is my error message.

'; } else { return; } }

jQuery

 jQuery(document).ready(function() { jQuery("#my-button").click(function() { jQuery.ajax({ type: 'POST', url: myAjax.ajaxurl, data: { "action": "test_function" } }); }); 

Solutions Collecting From Web of "Zeigt das jQuery-Ereignis “admin_notice” -Fehlermeldung an"

Sie können die Fehlermeldung HTML in der Erfolgsfunktion Ihres AJAX-Aufrufs hinzufügen:

 jQuery(document).ready(function() { jQuery("#my-button").click(function() { jQuery.ajax({ type: 'POST', url: myAjax.ajaxurl, data: { "action": "test_function" }, success: function(response){ jQuery('#wpbody-content').prepend('

'+response.error_message+'

'); } }); });

Danke an Douglas.Sesar, dass er mich in die richtige Richtung gelenkt hat. Sehr geschätzt! Das habe ich gemacht …

Gib zuerst die folgende ID in die Überschrift des Plugins ein. Ich füge die Admin-Nachricht html (über jQuery) direkt nach dieser Überschrift hinzu.

 

My Plugin Title

Meine jQuery-function:

 function fnDisplayAdminMessage(adminMessage, adminMessageColor) { jQuery.ajax({ type: 'POST', url: myAjax.ajaxurl, success: function(response) { jQuery('#my-admin-message').after('

' + adminMessage + '

'); jQuery("#my-dismiss-admin-message").click(function(event) { event.preventDefault(); jQuery('.' + 'error').fadeTo(100, 0, function() { jQuery('.' + 'error').slideUp(100, function() { jQuery('.' + 'error').remove(); }); }); }); switch (adminMessageColor) { case 'yellow': jQuery("div.error").css("border-left", "4px solid #ffba00"); break; case 'red': jQuery("div.error").css("border-left", "4px solid #dd3d36"); break; default: jQuery("div.error").css("border-left", "4px solid #7ad03a"); } } }); }

Und mein Ruf:

 fnDisplayAdminMessage('There was an error.', 'red'); 

Ich habe es so gemacht, dass ich immer die Fehlermeldung “Fehler” benutze und nur die Farbe ändere.

Zuletzt eine function zum Entfernen der Nachricht:

 function fnRemoveAdminMessage() { // check if there is an admin message displayed, if so then remove it if (jQuery("div.error").length) { jQuery("div.error").fadeTo(100, 0, function() { jQuery("div.error").slideUp(100, function() { jQuery("div.error").remove(); }); }); } } 

Ich hoffe, dass jemand anderes das nützlich findet.