Je suis en train de configurer un plugin et j'ai utilisé l'API de paramétrage pour la première fois pour créer un formulaire dans les paramètres. Les données du plug-in sont initialement créées par défaut lorsque le plug-in est activé et stockées dans la base de données dans un format sérialisé.
Aujourd'hui, j'ai ajouté la fonction de rappel de validation, qui fonctionne bien pour effectuer la validation. Cependant, lorsque la validation de n'importe quel champ échoue et que la fonction renvoie false (j'ai également essayé de renvoyer NULL), les données valides existantes dans la base de données sont supprimées.
La question est de savoir comment les choses sont censées se passer ou est-ce que je fais quelque chose de stupide? J'aurais cru que, dans cette situation, les données valides existantes dans la base de données seraient restées inchangées jusqu'à ce que l'utilisateur ait présenté un ensemble de données valides pour le modifier.
Toutes les suggestions appréciées.
Votre fonction sanitize_callback
ne doit pas renvoyer false
ou null
, ce qui indique que l'entrée n'est pas valide. Son objectif est de toujours renvoyer une valeur valide. La valeur renvoyée par cette fonction correspond à ce qui sera sauvegardé dans la base de données. Par conséquent, pour que tout ce qui est filtré soit purifié, il devra renvoyer quelque chose qui a du sens. Comparez-le avec intval
comme dans cet exemple , ce qui forcera l'API de configuration à stocker une valeur int
, quelle que soit l'entrée.
Quoi qu'il en soit, pour résoudre votre problème, vous devriez:
De plus, en plus de la dernière instruction, votre valeur pourrait bien devenir valide pendant l'assainissement: imaginez des entrées telles que " [email protected]"
ou "0123"
qui pourraient être assainies en "[email protected]"
et 123
en fonction de vos besoins.