Aktualisierte Nachrichten der Einstellungs-API werden nicht angezeigt, wenn die benutzerdefinierte Administrationsseite nicht in add_options_page () eingebunden ist.

9

Ich habe mit der Einstellungs-API herumgespielt und festgestellt, dass Meldungen (für Erfolg oder Fehler) nur angezeigt werden, wenn eine Einstellungsseite über add_options_page () in das WordPress-Menü eingebunden ist. Alles andere funktioniert nicht, zB add_dashboard_page (). Möchten Sie wissen, ob dies wahr ist? Beispielcode, mit dem ich es versucht habe, ist die Antwort mit der Klasse "RegisteredSettingsTest" unter Wo kann register_settings für die Einstellungs-API verknüpft werden, wenn Optionen auch außerhalb der Einstellungs-API aktualisiert werden sollen?

Jesse van Couten
quelle

Antworten:

21

Vielen Dank an Chip ( ausgezeichnetes API-Tutorial für Einstellungen ) und t31os ( großartiger Codeausschnitt für schnelle Tests ) für Ihre beiden Vorschläge.

Ich habe weiter gegraben und festgestellt, dass die Standardmeldungen tatsächlich angezeigt werden können, wenn ich mich in ein Menü einbinde, aber nur, wenn die Funktion settings_errors () aufgerufen wird.

Ändern Sie beispielsweise den t31os-Code wie folgt:

<div class="wrap">
  <h2>Test</h2>
  <?php settings_errors(); ?>
  <form action="options.php" method="post">

Benutzerdefinierte Fehlermeldungen können auch hinzugefügt werden, indem die Funktion add_settings_error () aufgerufen wird, um eine Erfolgs- oder Fehlermeldung anzuzeigen, indem der $typeParameter entweder als "Fehler" oder "aktualisiert" angegeben wird.

Jesse van Couten
quelle
das hatte mich auch für eine Weile verblüfft! using settings_errors();hat den Trick gemacht, danke für das Posten eines Follow-up Jesse!
CommentLuv
10

Ich verwende die API-Integration für Einstellungen in mein Design, verwende sie add_theme_page()und habe kein Problem damit, Administratorbenachrichtigungen anzuzeigen.

Ich vermute, dass es sich eher um ein Problem mit Ihrem Code als um eine Einschränkung der Einstellungs-API handelt.

Können Sie Ihren tatsächlichen Code veröffentlichen, damit wir Ihnen bei der Lösung von Codeproblemen helfen können?

BEARBEITEN

Möglicherweise müssen Sie Ihre Administratorbenachrichtigungen explizit ausgeben. Folgendes verwende ich beispielsweise in meiner Markup-Funktion für Einstellungsseiten:

<?php if ( isset( $_GET['settings-updated'] ) ) {
    echo "<div class='updated'><p>Theme settings updated successfully.</p></div>";
} ?>

Ich gehe davon aus, dass Sie etwas Ähnliches auch für Fehlerbenachrichtigungen tun könnten.

Chip Bennett
quelle
Siehe aktualisierte Antwort.
Chip Bennett
Den Code, den ich verwendet habe, finden Sie bei pastebin . Entschuldigung, wenn ich nicht klar genug bin. Was ich beobachte ist, wenn ich über add_options_page()die Einstellungen in ein Menü eingebunden bin und die Einstellungen speichere, wird die Meldung "Einstellungen gespeichert" angezeigt. Wenn ich jedoch den zu verwendenden Code add_theme_page()oder geändert habe add_dashboard_page(), wird die Standardmeldung "Einstellungen gespeichert" nicht angezeigt.
Jesse van Couten
Richtig ... haben Sie Code wie im obigen Beispiel hinzugefügt? Sie müssen es explizit zu Ihrer Einstellungsseiten-Markup-Funktion hinzufügen.
Chip Bennett
Ich bin geschmeichelt, dass Sie meinen Testcode verwendet haben, um darauf aufzubauen. Chip hat Recht, dass Sie den Hinweis selbst explizit hinzufügen müssen.
Viel