J'ai trouvé très peu sur ce site ou dans les recherches Google pour des exemples de validation de champs personnalisés de metabox.
Si quelqu'un veut donner des exemples, voici quelques cas qui seraient utiles
1) La date entrée comme 05/02/2011 est un format de date valide
2) Le nombre entré dans la zone de texte est numérique et entre 100 et 500
3) Le texte dans la zone de texte est> 25 caractères
Ma question n'est pas tant le code pour valider les champs mais où mettre le code de validation? Utilisez Javascript ou PHP? S'il s'accroche à la sauvegarde, des techniques pour faire face à l'échec de la validation - Mettre à jour la publication? Ne mettez pas à jour le message? - comment l'empêcher de se mettre à jour? Meilleure façon d'informer l'utilisateur des problèmes.
Toutes les suggestions sont appréciées. Un exemple de code est plus utile qu'une simple description d'une technique. (Ce serait un très bon sujet pour quelqu'un pour écrire un article.) Merci
la source
Réponses:
Directement à partir du WP Codex @ http://codex.wordpress.org/Function_Reference/add_meta_box , vous appelez le
save_post
hook et spécifiez la fonction qui sera exécutée pour valider / enregistrer vos données:Ensuite, vous définissez cette fonction, qui se verra automatiquement passer l'ID de publication. De plus, vous pouvez accéder au tableau $ _POST pour obtenir les valeurs dans vos métaboxes:
Toutes vos routines vers des données valides seront effectuées dans cette fonction. En fin de compte, vous enregistrerez probablement les données en utilisant quelque chose comme:
update_post_meta('meta_key', 'meta_value');
EDIT: Je me rends compte que je n'ai pas abordé l'ampleur de votre question, mais puisque j'ai mis du temps dans cela, je le laisse ici pour vous obtenir un quart du chemin là-bas.
la source
Il n'y a vraiment aucun moyen approprié de valider un champ de date, tout ce que vous pouvez faire est de le diviser et de le vérifier en plusieurs parties.
Oui
checkdate()
, mais comme mentionné dans les commentaires sur la page des documents, il ne peut pas être utilisé comme un moyen efficace de désinfecter la saisie de la date.La première chose que je vérifie habituellement est le type de données, si vous attendez une chaîne, convertissez-la en chaîne et de même pour les valeurs entières et de tableau.
Pour les champs de date, vous avez généralement un séparateur entre chaque partie de la date, divisé en fonction de cela et convertissez les parties (autant que vous attendez) en entiers.
Bien sûr, cela dépend vraiment de la façon dont vous stockez la date et de ce que vous attendez dans ce domaine, c'est quelque chose que vous devrez simplement désinfecter de manière appropriée en fonction de vos besoins spécifiques.
Les valeurs numériques sont assez faciles, tout d'abord converties en int.
Vérifiez ensuite qu'il est dans votre plage donnée (selon votre question).
ou..
Vérifier si une chaîne a une longueur particulière est facile, donc facile en fait, je vais simplement vous lier à la documentation PHP pour strlen.
http://php.net/manual/en/function.strlen.php
Les valeurs de date sont les plus délicates à mon avis, mais il s'agit vraiment d'écrire votre code pour répondre à ce que vous attendez de ce champ. Si vous avez un champ avec un format de date
D/M/Y
par exemple, vous savez que la/
(barre oblique) sera (devrait) être présente et que le fractionnement sur ce délimètre devrait vous donner un tableau de 3 valeurs numériques ... (si le fractionnement ne fonctionne pas) t vous donne 3 valeurs, ou aucune valeur numérique n'est valide, alors les données n'étaient pas valides) ..J'espère que cela aide .. (et je suis ouvert à la critique si quelqu'un a une meilleure méthode pour tout ce qui précède).
la source
Pour valider correctement l'entrée, vous devrez utiliser une combinaison de Javascript et PHP.
Je recommande fortement d'utiliser le plugin jQuery Validation: http://docs.jquery.com/Plugins/Validation . Il vous permettra de valider les entrées immédiatement et de signaler à l'utilisateur que quelque chose ne va pas.
La deuxième étape consiste à valider les données à l'aide de PHP. WordPress a un tas de fonctions de validation intégrées , donc je commencerais là et si vous ne trouvez pas ce dont vous avez besoin, intégrez simplement la logique dont vous avez besoin.
la source