web-dev-qa-db-fra.com

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

Joué avec l'API des paramètres et constaté que les messages (de succès ou d'erreur) ne sont affichés 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 (). Voudrais savoir si c'est vrai? Le code exemple que j'ai essayé est la réponse contenant la classe "RegisteredSettingsTest" à Où raccorder register_settings pour l'API de paramètres quand souhaite également mettre à jour des options en dehors de l'API de paramètres?

9
Jesse van Couten

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

J'ai fait des recherches plus approfondies et découvert que les messages par défaut peuvent en fait être affichés si je suis connecté à un menu, mais seulement si la fonction settings_errors () est appelée.

Par exemple, modifiez 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 paramètre $type comme "erreur" ou "mis à jour".

20
Jesse van Couten

J'utilise l'intégration de l'API Settings dans mon thème, j'utilise add_theme_page() et je n'ai pas de problème à afficher les notifications de l'administrateur.

Je soupçonne que c'est un problème avec votre code plutôt qu'une limitation de l'API Settings.

Pouvez-vous publier votre code réel afin que nous puissions vous aider à résoudre les problèmes liés au code?

MODIFIER

Vous devrez peut-être sortir vos avis d’administrateur explicitement. Par exemple, voici ce que j'utilise dans la fonction de balisage de la page de 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.

10
Chip Bennett