I messaggi aggiornati dell'API delle impostazioni non verranno visualizzati se la pagina di amministrazione personalizzata non è agganciata a add_options_page ()


9

Ho giocato con l'API delle impostazioni e ho scoperto che i messaggi (per successo o errori) vengono visualizzati solo quando una pagina delle impostazioni è collegata al menu WordPress tramite add_options_page (). Qualsiasi altra cosa non funzionerà, ad esempio add_dashboard_page (). Vorresti sapere se questo è vero? Il codice di esempio con cui ho provato è la risposta contenente la classe "RegisteredSettingsTest" in Dove agganciare register_settings per l'API delle impostazioni quando si desidera aggiornare anche le opzioni al di fuori dell'API delle impostazioni?

Risposte:


21

Grazie Chip ( eccellente tutorial sull'API delle impostazioni ) e t31os ( ottimo frammento di codice per test rapidi ) per entrambi i tuoi suggerimenti.

Ho fatto ulteriori ricerche e ho scoperto che i messaggi predefiniti possono effettivamente essere visualizzati se aggancio in qualsiasi menu, ma solo se viene chiamata la funzione settings_errors () .

Ad esempio, modificando il codice t31os come segue:

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

È inoltre possibile aggiungere messaggi di errore personalizzati chiamando la funzione add_settings_error () per visualizzare il messaggio di successo o fallimento specificando il $typeparametro come 'errore' o 'aggiornato'.


questo mi ha fatto inciampare anche per un po '! usando ha settings_errors();fatto il trucco, grazie per aver postato un follow-up Jesse!
CommentLuv

10

Uso l'integrazione dell'API delle impostazioni con il mio tema, uso add_theme_page()e non ho problemi a visualizzare le notifiche dell'amministratore.

Sospetto che si tratti di un problema con il tuo codice piuttosto che con una limitazione dell'API delle impostazioni.

Puoi pubblicare il tuo codice attuale, così possiamo aiutarti a risolvere eventuali problemi relativi al codice?

MODIFICARE

Potrebbe essere necessario inviare esplicitamente le notifiche di amministratore. Ad esempio, ecco quello che uso nella funzione di markup della mia pagina delle impostazioni:

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

Presumo che potresti fare qualcosa di simile anche per le notifiche di errore.


Vedi la risposta aggiornata.
Chip Bennett,

Il codice che ho usato può essere trovato su pastebin . Mi scuso se non sono abbastanza chiaro. Quello che osservo è se ho collegato un menu tramite add_options_page()e salvato le impostazioni, verrà visualizzato un messaggio "Impostazioni salvate". Tuttavia, se ho modificato il codice da utilizzare add_theme_page()o add_dashboard_page(), il messaggio "Impostazioni salvate" predefinito non verrà visualizzato.
Jesse van Couten

Giusto ... hai aggiunto il codice come nell'esempio sopra? Devi aggiungerlo esplicitamente alla funzione di markup della pagina delle impostazioni.
Chip Bennett,

Sono lusingato che tu abbia usato il mio codice di prova per costruire sopra, Chip ha ragione che dovrai aggiungere l'avviso in modo esplicito.
Buona
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.