Les messages mis à jour de l'API des paramètres ne s'afficheront pas si la page d'administration personnalisée n'est pas connectée à add_options_page ()


9

J'ai joué avec l'API Paramètres et constaté que les messages (pour le succès ou les erreurs) ne s'affichent que lorsqu'une page de paramètres est connectée au menu WordPress via add_options_page (). Tout le reste ne fonctionnera pas, par exemple add_dashboard_page (). Aimeriez-vous savoir si cela est vrai? L'exemple de code que j'ai essayé est la réponse contenant la classe "RegisteredSettingsTest" à Où accrocher register_settings pour l'API Settings lorsque vous souhaitez également mettre à jour les options en dehors de l'API Settings?

Réponses:


21

Merci Chip ( excellent didacticiel sur l'API Settings ) et t31os ( excellent extrait de code pour des tests rapides ) pour vos deux suggestions.

J'ai creusé un peu plus et j'ai constaté que les messages par défaut peuvent en effet être affichés si je me connecte à n'importe quel menu mais uniquement si la fonction settings_errors () est appelée.

Par exemple, en modifiant le code t31os comme suit:

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

Des messages d'erreur personnalisés peuvent également être ajoutés en appelant la fonction add_settings_error () pour afficher le message de réussite ou d'échec en spécifiant le $typeparamètre comme «erreur» ou «mis à jour».


cela m'avait aussi laissé perplexe pendant un certain temps! l'utilisation a settings_errors();fait l'affaire, merci d'avoir posté un suivi Jesse!
CommentLuv

10

J'utilise l'intégration de l'API Paramètres avec mon thème, j'utilise add_theme_page()et je n'ai aucun problème à afficher les notifications d'administrateur.

Je soupçonne qu'il s'agit d'un problème avec votre code plutôt que d'une limitation de l'API Paramètres.

Pouvez-vous publier votre code réel, afin que nous puissions vous aider à résoudre tout problème lié au code?

ÉDITER

Vous devrez peut-être générer vos notifications d'administrateur de manière explicite. Par exemple, voici ce que j'utilise dans ma fonction de balisage de la page des paramètres:

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

Je suppose que vous pouvez également faire quelque chose de similaire pour les avis d'erreur.


Voir la réponse mise à jour.
Chip Bennett

Le code que j'ai utilisé se trouve sur pastebin . Toutes mes excuses si je ne suis pas assez clair. Ce que j'observe, c'est que si je me connecte à un menu via add_options_page()et enregistre les paramètres, un message "Paramètres enregistrés" s'affichera. Cependant, si j'ai changé le code pour utiliser add_theme_page()ou add_dashboard_page(), le message par défaut "Paramètres enregistrés" n'apparaîtra pas.
Jesse van Couten

Bon ... avez-vous ajouté du code selon l'exemple ci-dessus? Vous devez l'ajouter explicitement à votre fonction de balisage de la page des paramètres.
Chip Bennett

Je suis flatté que vous ayez utilisé mon code de test pour construire dessus, Chip a raison que vous devrez ajouter la notification vous-même explicitement.
Bonne
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.