Comment empêcher la page d’options de thème WordPress d’enregistrer des champs vides ?
J’ai donc suivi de nombreux tutoriels sur la création d’une page d’options de thème WordPress, et j’ai avancé assez loin dans le processus. En fait, j’ai pratiquement terminé, mais il y a un bogue géant dans ma fonction de sauvegarde.
Si le champ d’option est laissé vide, il enregistre le champ vide dans la base de données, de sorte que tout sur le front-end est essentiellement vide. Lorsque je clique sur Enregistrer dans ma page d’options, je veux qu’il ne mette à jour que les champs dont les informations ont été modifiées, et si le champ est laissé vide, il supprime les données de la base de données.
Voici mon script de sauvegarde :
if ( $_GET['page'] == basename(__FILE__) ) {
if ( 'save' == $_REQUEST['action'] ) {
foreach ($options as $value) {
update_option( $value['id'], $_REQUEST[ $value['id'] ] ); }
foreach ($options as $value) {
if( isset( $_REQUEST[ $value['id'] ] ) ) { update_option( $value['id'], $_REQUEST[ $value['id'] ] ); } else { delete_option( $value['id'] ); } }
header("Location: admin.php?page=admin-panel.php&saved=true");
die;
}
Ce script extrait l’ID d’un tableau d’options. Un exemple serait pour le logo :
array( "name" => "Logo URL",
"desc" => "Enter the link to your logo image",
"id" => $shortname."_logo",
"type" => "text",
"std" => ""),
Donc, avec l’exemple de logo ci-dessus, si j’entre quelque chose dans le champ URL du logo, il le met à jour correctement et il apparaît sur le front-end, mais si je le laisse vide et que j’appuie sur Enregistrer, il met à jour la base de données avec une valeur vide, donc rien n’apparaît sur le front-end, pas même la valeur par défaut.
Des idées sur la façon dont je peux mettre à jour le script de sauvegarde pour éviter cela ?
Solution n°1 trouvée
Pour les personnes intéressées qui ont peut-être consulté un didacticiel similaire, la suppression de la isset
partie du script résout le problème !
0 commentaire