Titel klingt kontraintuitiv, aber ertrage es mit mir. :) :)
Ich habe eine Optionsseite, die mit der Einstellungs-API erstellt wurde. Wenn der Benutzer ungültige Daten eingibt, möchte ich beim add_settings_error()
Aufruf eine Fehlermeldung anzeigen .
Aber! Um festzustellen, dass die Daten ungültig sind, muss ich einen Remote-API-Aufruf durchführen. Dieser Aufruf basiert auf gespeicherten Daten. Daher kann ich dies beim Desinfektionsrückruf nicht tun (was empfohlen wird, um solche Benachrichtigungen auszulösen), da meine Daten noch nicht gespeichert sind.
Stattdessen hatte ich versucht, meinen Scheck einzuhaken admin_notices
. Es funktioniert die meiste Zeit einwandfrei, mit Ausnahme eines (und wichtigsten) Falls. Wenn Einstellungen gespeichert werden, folgen immer native Einstellungen. Hinweis und meine benutzerdefinierten Hinweise werden aus irgendeinem Grund vollständig ignoriert .
Wie kann ich diesen Fehlerhinweis auslösen, selbst wenn WP der Meinung ist, dass alles in Ordnung ist?
Bearbeiten
Fokussiertere Frage - warum genau Einstellungen gespeichert. übertrumpft irgendwelche anderen Hinweise?
PS Ich könnte versuchen, einen API-Aufruf zu veranlassen, Daten optional als Argument zu verwenden, anstatt sie aus der gespeicherten Option zu lesen, aber bisher denke ich, dass dadurch Argumente zu umfangreich werden.
get_settings_errors()
, an diesem Punkt wird der Transientenspeicher gelöscht, dann stellen Sie sieadd_settings_error()
nacheinander wieder her und fügen Ihren neuen hinzu. Jetzt wird der vorübergehende Speicher gelöscht und Sie haben alle im seitenlokalen Speicher, sodass sie beim nächsten Durchlaufsettings_errors()
abgefangen werden. Was denken Sie?Eine Sache, die Sie tun könnten, denke ich:
add_settings_error()
Natürlich wird die Einstellungs-API dadurch etwas besiegt / missbraucht, aber es könnte ein Weg sein.Bearbeiten: Die Nachricht "Gespeicherte Einstellungen" übertrifft Ihre anderen Benachrichtigungen nicht, sondern wird nur angezeigt, weil Ihre anderen Benachrichtigungen bereits (aus irgendeinem Grund) aus dem internen Speicher "settings_error" gelöscht wurden. Warum das so ist, weiß ich nicht, aber die Nachricht "Gespeicherte Einstellungen" wird nur dann zum Fehlerspeicher hinzugefügt, wenn sie leer ist. Was zu Ihrem Dilemma beitragen könnte, ist, dass der Einstellungsfehlerspeicher immer dann gelöscht wird, wenn er (via
get_settings_errors()
) gelesen wird.quelle