Création d'une fonctionnalité de paramètres de sauvegarde / restauration simples

Les options sont les données les plus importantes dans WordPress, elles stockent divers paramètres de configuration (voir plus). Elles sont également contenues dans la base de données, à l'instar d'autres données importantes telles que des publications, des pages, etc. Jour après jour, ces options peuvent être modifiées par WordPress lui-même ou par les utilisateurs. Alors, comment les restaurer à un état antérieur sans mémoriser chaque valeur exacte?

Dans ce tutoriel, je vais vous montrer comment créer une simple fonctionnalité de sauvegarde / restauration pour votre blog WordPress. Avec cette fonctionnalité, vous pouvez sauvegarder toutes les options à un autre endroit, à partir duquel vous pouvez les restaurer à tout moment sans les configurer à nouveau..


Avant de commencer

En général, notre fonctionnalité aura deux sections, l’une est une section Export pour la sauvegarde des données et une section Import pour la restauration des données. Je vais donc les démontrer en créant un simple plugin.


Étape 1 En-tête du plugin

Tout d'abord, je dois écrire quelques lignes pour informer WordPress de notre plugin.

 / * Nom du plug-in: URI du plug-in d'option I / E: http://wp.tutsplus.com/ Description: Ceci est un exemple de plug-in avec la fonctionnalité d'options de sauvegarde et de restauration. Auteur: Lee Pham Version: 1.0 URI de l'auteur: http://twitter.com/leephamj * /

Et voici notre résultat:


Étape 2 Créer un administrateur de page

Nous avons maintenant besoin d’un emplacement pour insérer notre interface de plug-in. Elle présente deux fonctionnalités clés mentionnées ci-dessus (dont les fonctionnalités d’importation et d’exportation). Je génère donc une page dans la section admin:

 function register_ie_option () add_menu_page ('IE Option Page', 'IE Option', 'activate_plugins', 'ie-option', 'ie_option_page', ", 76); add_submenu_page ('ie-option', 'Importer', ' Import ',' activate_plugins ',' ie-import-option ',' ie_import_option_page '); add_submenu_page (' ie-option ',' Export ',' Export ',' activate_plugins ',' ie-export-option ',' ie_export_option_page '); function ie_option_page () // Nous sommes ici function ie_import_option_page () // Fonction d'importation de contenu function ie_export_option_page () // Fonction d'exportation de contenu add_action (' admin_menu ',' register_ie_option ');

Voici quelques points:

  • Nous utilisons add_menu_page comme fonction WordPress intégrée pour ajouter une nouvelle section de menu de niveau supérieur dans la barre latérale du menu ie_option_page paramètre est la fonction de rappel pour la sortie du contenu de la page.
  • Afin de séparer deux fonctionnalités principales dans différentes sections, nous utilisons add_submenu_page pour les ajouter au menu de niveau supérieur que nous venons de créer ci-dessus. Comme vous le voyez, chaque fonction possède également une fonction de rappel permettant d’afficher le contenu de sortie comme le add_menu_page la fonction fait. Peu importe si vous les fusionnez en un seul endroit, j'essaie juste de rester clair.
  • Puis on accroche register_ie_option sur la admin_menu action afin de déclencher notre objectif chaque fois que cette action est appelée.

Étape 3 Créer une fonction d'exportation

Je prévois de créer une page d'exportation comme celle-ci:

Créer un squelette de page d'exportation

 fonction ie_export_option_page () if (! isset ($ _ POST ['exportation'])) ?> 

Exportation

Quand vous cliquez Sauvegarder toutes les options bouton, le système générera un fichier JSON que vous pourrez sauvegarder sur votre ordinateur.

Ce fichier de sauvegarde contient toutes les options de configuration et de configuration de notre site Web. Notez que ça le fait NE PAS contient des articles, des pages ou des données pertinentes, uniquement toutes vos options.

Après l'exportation, vous pouvez utiliser le fichier de sauvegarde pour restaurer vos paramètres sur ce site ou un autre site WordPress..

Nous créons simplement un formulaire avec un bouton et vérifions si le bouton est cliqué ou non. De plus, nous ajoutons du texte d’instruction en utilisant une classe CSS WordPress disponible. Pour faire un contrôle de sécurité, j'utilise un wp_nonce_field () et le check_admin_referer () fonction, en savoir plus sur WordPress Nonces.

Nommer le nom de fichier à générer

 $ blogname = str_replace ("", "", get_option ('blogname')); $ date = date ("m-d-Y"); $ json_name = $ blogname. "-". $ date;

Nommez simplement le fichier pour pouvoir facilement voir où et quand il a été exporté.

Obtenir des options de sauvegarde et encoder des données JSON

 $ options = get_alloptions (); foreach ($ options en tant que $ key => $ value) $ value = Maybe_unserialize ($ value); $ need_options [$ key] = $ valeur;  $ json_file = json_encode ($ need_options);

Voici l'étape importante, faisons attention:

  • get_alloptions () est une fonction qui récupère toutes les options de votre site et les renvoie sous forme de tableau, $ options dans ce cas.
  • En récupérant toutes les options, la valeur des options peut être des données sérialisées, nous devons donc la désérialiser.
  • Notre intention est de générer du JSON pour stocker les données de sauvegarde. JSON est un moyen léger et puissant de stocker des informations textuelles. Nous devons donc convertir nos données en syntaxe JSON., json_encode nous aide à atteindre cet objectif.
 ob_clean (); echo $ json_file; en-tête ("Content-Type: text / json; charset =". get_option ('blog_charset')); en-tête ("Content-Disposition: attachment; nomfichier = $ nom_json.json"); sortie();

Ensuite, nous intégrons le contenu de nos données JSON dans deux fonctions importantes., ob_clean () et sortie() pour nous assurer que notre fichier JSON généré ne contient que des données JSON qui json_file détient sans aucune autre donnée. À propos, nous envoyons une demande d’en-tête au client qui affiche une boîte de dialogue de téléchargement. Pour que cela fonctionne correctement, nous devrions mettre le ob_start () fonctionne en haut de notre code de plugin, cela évite les erreurs d’en-tête, peut-être qu’il existe des espaces ou des lignes supplémentaires quelque part dans le code WordPress qui pourraient causer ce problème..

"JSON (JavaScript Object Notation) est un format léger d'échange de données. Il est facile à lire et à écrire pour les utilisateurs. Il est facile à analyser et à générer par les machines."

Donc, voici le code de fonction d'exportation complet:

 fonction ie_export_option_page () if (! isset ($ _ POST ['exportation'])) ?> 

Exportation

Quand vous cliquez Sauvegarder toutes les options bouton, le système générera un fichier JSON que vous pourrez sauvegarder sur votre ordinateur.

Ce fichier de sauvegarde contient toutes les options de configuration et de configuration de notre site Web. Notez que ça le fait NE PAS contient des articles, des pages ou des données pertinentes, uniquement toutes vos options.

Après l'exportation, vous pouvez utiliser le fichier de sauvegarde pour restaurer vos paramètres sur ce site ou un autre site WordPress..

$ valeur) $ valeur = Maybe_unserialize ($ valeur); $ need_options [$ key] = $ valeur; $ json_file = json_encode ($ need_options); // Encode les données dans les données json ob_clean (); echo $ json_file; en-tête ("Content-Type: text / json; charset =". get_option ('blog_charset')); en-tête ("Content-Disposition: attachment; nomfichier = $ nom_json.json"); sortie();

Étape 4 Créer une fonction d'importation

La tâche de cette page est assez simple, elle affiche un formulaire de téléchargement et analyse les données du fichier JSON pour sauvegarder nos options..

Créer un squelette de page d'importation

 fonction ie_import_option_page () ?> 

Importation

Cliquez sur le bouton Parcourir et choisissez un fichier json que vous sauvegardez avant.

Appuyez sur le bouton de restauration, WordPress fait le reste pour vous.

Comme pour la page d'exportation, nous créons un formulaire, mais cette fois-ci, nous ajoutons un bouton Parcourir afin que l'utilisateur puisse choisir le fichier qu'il souhaite et l'envoyer..

Validation et mise à jour du fichier JSON

 if (isset ($ _ FILES ["import"])) if ($ _FILES ["import"] ["erreur"]> 0) wp_die ("Une erreur se produit");  else $ nom_fichier = $ _FILES ['import'] ['nom']; $ file_ext = strtolower (end (explode (".", $ nom_fichier))); $ file_size = $ _FILES ['import'] ['size']; if (($ file_ext == "json") && ($ file_size < 500000))  $encode_options = file_get_contents($_FILES['import']['tmp_name']); $options = json_decode($encode_options, true); foreach ($options as $key => $ valeur) update_option ($ key, $ valeur);  écho "

Toutes les options sont restaurées avec succès.

"; else echo"

Fichier non valide ou taille de fichier trop grande.

";

Si le processus de téléchargement génère des erreurs, il suffit de renvoyer le message "Une erreur est survenue". Sinon, obtenez l'extension et la taille du fichier, stockez-les dans des variables et vérifiez-les. Nous n'acceptons que les fichiers ayant l'extension ".json" et une taille inférieure à 500 000 octets. Si le fichier ne convient pas, affichez simplement le message d'erreur "Fichier ou taille de fichier non valide trop volumineux".. Remarque: Vous pouvez modifier cette taille selon vos besoins.

Puis le $ encode_options variable obtiendra tout le contenu de ce fichier. Comme le fichier contient des données JSON, nous devons d’abord le décoder avant de l’utiliser. Pour ce faire, nous utilisons json_decode avec un deuxième paramètre qui a une valeur vraie, cette fonction renvoie donc une valeur de tableau. Avec une valeur de tableau, nous commençons à le parcourir en boucle. À chaque itération, nous mettrons à jour les données avec la même clé et sa valeur. En fin de compte, toutes nos options seront restaurées exactement comme elles étaient, et un message réussi sera affiché..

Et voici le code de fonction d'importation complet:

 fonction ie_import_option_page () ?> 

Importation

0) wp_die ("Une erreur survient"); else $ nom_fichier = $ _FILES ['import'] ['nom']; // Récupère le nom du fichier $ file_ext = strtolower (end (explode (".", $ Nom_fichier))); // Récupère l'extension du fichier $ file_size = $ _FILES ['import'] ['size']; // Obtenir la taille du fichier / * Assurez-vous que le fichier téléchargé est de type JSON et que sa taille ne dépasse pas 500 000 octets * Vous pouvez modifier la taille souhaitée * / if (($ file_ext == "json") && ($ file_size < 500000)) $encode_options = file_get_contents($_FILES['import']['tmp_name']); $options = json_decode($encode_options, true); foreach ($options as $key => $ valeur) update_option ($ key, $ valeur); écho "

Toutes les options sont restaurées avec succès.

"; else echo"

Fichier non valide ou taille de fichier trop grande.

";?>

Cliquez sur le bouton Parcourir et choisissez un fichier json que vous sauvegardez avant.

Appuyez sur le bouton de restauration, WordPress fait le reste pour vous.


Créez votre propre fonctionnalité de sauvegarde pour vos modèles ou plug-ins

Dans l'exemple de plug-in, j'ai sauvegardé toutes les options du site en utilisant le get_alloptions Fonction WordPress. Si vous souhaitez appliquer cela à vos propres options spécifiques, procédez comme suit:

 $ options = array ('votre_option1_name' => get_option ('votre_option1_name'), 'votre_option2_name' => get_option ('votre_option2_name'); $ json_file = json_encode ($ options);

Et passez à l'étape suivante comme ci-dessus. Vous choisissez librement les options que vous souhaitez sauvegarder!


Conclusion

Dans ce didacticiel, nous présentons un aperçu de la création d’une fonctionnalité simple de sauvegarde / restauration. Vous devriez remarquer que mon plugin est juste un simple exemple, pas un officiel. Mon but n'est pas d'écrire un plugin parfait, mais de vous montrer le principe de base de cette fonctionnalité. En le comprenant, vous pouvez créer votre propre fonctionnalité sur vos modèles ou plug-ins, vous pouvez également le rendre aussi flexible que vous le souhaitez. Par conséquent, vous pouvez isoler cette fonctionnalité pour vos templates / plugins.

J'espère que ce tutoriel vous sera utile, dites-moi ce que vous en pensez. Vos idées le rendent meilleur, ou même me montrent mes erreurs, votre feedback nous aidera beaucoup. Merci d'avoir lu!


Préférence:

  • Fonctions JSON
  • En-tête PHP
  • Ecrire un plugin WordPress
  • add_menu_page Fonction WordPress
  • add_submenu_page Fonction WordPress
  • get_alloptions Fonction WordPress