Een eenvoudige functie voor het maken van back-up- / herstelinstellingen maken

Opties zijn de belangrijkste gegevens in WordPress, ze slaan verschillende configuratie-instellingen op (zie meer). Ze zitten ook in de database zoals andere belangrijke gegevens zoals berichten, pagina's, etc. Dag na dag kunnen deze opties door WordPress zelf of door gebruikers worden gewijzigd. Dus hoe ze terug naar een vorige staat te configureren zonder elke exacte waarde te onthouden?

In deze zelfstudie laat ik je zien hoe je een eenvoudige back-up- / herstelfunctie voor je WordPress-blog kunt maken. Met deze functie kunt u een back-up maken van alle opties naar een andere plaats, waar u ze op elk moment van kunt herstellen zonder ze opnieuw te configureren.


Voor we beginnen

Over het algemeen heeft onze functie twee secties, één is een sectie Exporteren voor het maken van back-ups van gegevens en een sectie Importeren voor het herstellen van gegevens. Dus ik zal deze demonstreren door een eenvoudige plug-in te maken.


Stap 1 Plug-in header

Allereerst moet ik een paar regels schrijven om WordPress over onze plug-in te vertellen.

 / * Naam van de plug-in: I / E-optie Plug-in URI: http://wp.tutsplus.com/ Beschrijving: Dit is een voorbeeldplug-in met de functie voor back-up- en herstelopties. Auteur: Lee Pham Versie: 1.0 Auteur URI: http://twitter.com/leephamj * /

En hier is ons resultaat:


Stap 2 Maak een paginabeheerder

Nu hebben we een plaats nodig om onze plugin-interface te plaatsen, deze toont twee belangrijke functies die hierboven werden genoemd (inclusief functies voor importeren en exporteren). Dus ik genereer een pagina in de admin sectie:

 functie register_ie_option () add_menu_page ('IE Optiepagina', 'IE Optie', 'activate_plugins', 'ie-optie', 'ie_option_page', ", 76); add_submenu_page ('ie-optie', 'Importeren', ' Importeer ',' activate_plugins ',' ie-import-optie ',' ie_import_option_page '); add_submenu_page (' ie-optie ',' Exporteren ',' Exporteren ',' activate_plugins ',' ie-export-optie ',' ie_export_option_page '); functie ie_option_page () // Onze dingen hier functie ie_import_option_page () // Inhoud importfunctie functie ie_export_option_page () // Inhoud exportfunctie add_action (' admin_menu ',' register_ie_option ');

Hier zijn enkele punten:

  • We gebruiken add_menu_page als een ingebouwde WordPress-functie om een ​​nieuw hoofdmenu-gedeelte toe te voegen in de zijbalk van het beheerdersmenu en waar de ie_option_page parameter is de callback-functie voor het uitvoeren van de pagina-inhoud.
  • Om twee hoofdkenmerken in verschillende secties te scheiden, gebruiken we add_submenu_page om ze toe te voegen aan het hoofdmenu dat we zojuist hierboven hebben gecreëerd. Zoals je ziet, heeft elke functie ook een callback-functie om uitvoerinhoud zoals de add_menu_page functie doet. Het maakt niet uit of je deze op één plek samenvoegt, ik probeer het gewoon duidelijk te houden.
  • Dan haakten we register_ie_option op de ADMIN_MENU actie om ons doel te activeren telkens als deze actie wordt genoemd.

Stap 3 Maak de exportfunctie

Ik ben van plan om een ​​exportpagina als deze te maken:

Maak een skeletpagina voor de exportpagina

 functie ie_export_option_page () if (! isset ($ _ POST ['export'])) ?> 

Exporteren

Wanneer u klikt Maak een backup van alle opties knop, genereert het systeem een ​​JSON-bestand dat u op uw computer kunt opslaan.

Dit back-upbestand bevat alle configuratie- en instellingsopties op onze website. Merk op dat dat zo is NIET bevatten berichten, pagina's of andere relevante gegevens, alleen al uw opties.

Na het exporteren kunt u het back-upbestand gebruiken om uw instellingen op deze site opnieuw te herstellen of een andere WordPress-site.

We maken gewoon een formulier met een knop en controleren of op de knop wordt geklikt of niet. Bovendien voegen we wat instructietekst toe met behulp van een aantal beschikbare WordPress CSS-klassen. Voor het uitvoeren van een beveiligingscontrole gebruik ik een wp_nonce_field () en de check_admin_referer () functie, lees meer over WordPress Nonces.

Een naam geven aan de te genereren bestandsnaam

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

Geef het bestand een naam, zodat u gemakkelijk kunt zien waar en wanneer het is geëxporteerd.

Back-upopties ophalen en coderen in JSON-gegevens

 $ options = get_alloptions (); foreach ($ options as $ key => $ value) $ value = maybe_unserialize ($ value); $ need_options [$ key] = $ waarde;  $ json_file = json_encode ($ need_options);

Hier is de belangrijke stap, laten we opletten:

  • get_alloptions () is een functie die alle opties op uw site krijgt en deze als een array retourneert, $ options in dit geval.
  • Door alle opties op te halen, kan de waarde van opties geserialiseerde gegevens zijn, dus we moeten eerst de selectie ongedaan maken.
  • Het is onze bedoeling om JSON te genereren om de back-upgegevens op te slaan. JSON is een lichtgewicht en krachtige manier om tekstinformatie op te slaan. Dus wat we moeten doen is onze gegevens converteren naar JSON-syntaxis, json_encode helpt ons om dit doel te bereiken.
 ob_clean (); echo $ json_file; header ("Content-type: text / json; charset =". get_option ('blog_charset')); header ("Content-Disposition: attachment; bestandsnaam = $ json_name.json"); Uitgang();

Vervolgens wikkelen we de inhoud van onze JSON-gegevens in twee belangrijke functies, ob_clean () en Uitgang() om ervoor te zorgen dat ons gegenereerde JSON-bestand alleen JSON-gegevens bevat json_file geldt zonder andere gegevens. Trouwens, we sturen een headerverzoek naar de client die een downloaddialoog toont. Om dit goed te laten werken, moeten we de ob_start () functie aan de bovenkant van onze plugin-code, dit voorkomt dat er header-fouten optreden, misschien zijn er extra spaties of lijnen ergens in WordPress-code die dat kunnen veroorzaken.

"JSON (JavaScript Object Notation) is een lichtgewicht data-uitwisselingsformat, het is gemakkelijk voor mensen om te lezen en te schrijven, het is gemakkelijk voor machines om te parsen en te genereren."

Dus hier is de volledige exportfunctiecode:

 functie ie_export_option_page () if (! isset ($ _ POST ['export'])) ?> 

Exporteren

Wanneer u klikt Maak een backup van alle opties knop, genereert het systeem een ​​JSON-bestand dat u op uw computer kunt opslaan.

Dit back-upbestand bevat alle configuratie- en instellingsopties op onze website. Merk op dat dat zo is NIET bevatten berichten, pagina's of andere relevante gegevens, alleen al uw opties.

Na het exporteren kunt u het back-upbestand gebruiken om uw instellingen op deze site opnieuw te herstellen of een andere WordPress-site.

$ waarde) $ value = maybe_unserialize ($ value); $ need_options [$ key] = $ waarde; $ json_file = json_encode ($ need_options); // Codeer gegevens in json-gegevens ob_clean (); echo $ json_file; header ("Content-type: text / json; charset =". get_option ('blog_charset')); header ("Content-Disposition: attachment; bestandsnaam = $ json_name.json"); Uitgang();

Stap 4 Importeer functie

De taak van deze pagina is vrij eenvoudig, het geeft een uploadformulier weer en parseert gegevens uit het JSON-bestand om een ​​back-up te maken van onze opties.

Creëer een paginaskelet

 functie ie_import_option_page () ?> 

Importeren

Klik op de knop Bladeren en kies een json-bestand waarvan u eerder een back-up maakte.

Druk op de knop Herstellen, WordPress doet de rest voor u.

Net als de pagina Exporteren maken we een formulier, maar deze keer voegen we een knop Bladeren toe, zodat de gebruiker het bestand kan kiezen dat ze willen en het inzenden.

JSON-bestand valideren en bijwerken

 if (isset ($ _ FILES ['import'])) if ($ _FILES ['import'] ['error']> 0) wp_die ("Foutmelding");  else $ file_name = $ _FILES ['import'] ['name']; $ file_ext = strtolower (end (explode (".", $ file_name))); $ 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 => $ waarde) update_option ($ key, $ value);  echo "

Alle opties zijn succesvol hersteld.

"; else echo"

Ongeldig bestand of bestandsgrootte te groot.

";

Als het uploadproces fouten krijgt, stuur dan een bericht "Een fout is opgetreden". Als dat niet het geval is, krijgt u de extensie en de grootte van het bestand, slaat u ze op in variabelen en controleert u ze. We accepteren alleen bestanden met de extensie ".json" en een grootte van minder dan 500000 bytes. Als het bestand niet geschikt is, geeft u gewoon een foutmelding 'Ongeldig bestand of bestandsgrootte te groot'.. Notitie: U kunt deze maat naar behoefte aanpassen.

Dan de $ encode_options variabele krijgt alle inhoud van dit bestand. Omdat het bestand JSON-gegevens bevat, moeten we eerst het decoderen voordat we het gebruiken. Om dit te doen, gebruiken we json_decode met een tweede parameter die een echte waarde heeft, dus deze functie retourneert een arraywaarde. Met een arraywaarde beginnen we erover te lussen. Op elke iteratie zullen we gegevens bijwerken met dezelfde sleutel en de bijbehorende waarde. Uiteindelijk worden al onze opties hersteld zoals ze waren en wordt een succesvol bericht weergegeven.

En hier is de volledige functiecode voor importeren:

 functie ie_import_option_page () ?> 

Importeren

0) wp_die ("Foutmelding"); else $ file_name = $ _FILES ['import'] ['name']; // Haal de naam van het bestand $ file_ext = strtolower (end (explode (".", $ File_name))); // Download de extensie van $ file_size = $ _FILES ['import'] ['size']; // Grootte van het bestand ophalen / * Controleer of het geüploade bestand van het JSON-bestandstype is en het formaat niet groter is dan 500000 bytes * U kunt de gewenste grootte wijzigen * / 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 => $ waarde) update_option ($ key, $ value); echo "

Alle opties zijn succesvol hersteld.

"; else echo"

Ongeldig bestand of bestandsgrootte te groot.

";?>

Klik op de knop Bladeren en kies een json-bestand waarvan u eerder een back-up maakte.

Druk op de knop Herstellen, WordPress doet de rest voor u.


Creëer uw eigen back-upfunctie voor uw sjablonen of plug-ins

In de voorbeeldplug-in heb ik een back-up gemaakt van alle site-opties met behulp van de get_alloptions WordPress-functie. Als je dit op je eigen specifieke opties wilt toepassen, doe je het als volgt:

 $ options = array ('your_option1_name' => get_option ('your_option1_name'), 'your_option2_name' => get_option ('your_option2_name'); $ json_file = json_encode ($ opties);

En ga door naar de volgende stap zoals hierboven. U kiest vrij welke opties u wilt back-uppen!


Conclusie

In deze zelfstudie bekijken we een overzicht van het maken van een eenvoudige back-up- / herstelfunctie. U zou moeten opmerken dat mijn plugin slechts een eenvoudige en geen officiële is. Mijn doel is niet om een ​​perfecte plug-in te schrijven, maar om u het basisprincipe van deze functie te laten zien. Door het te begrijpen, kunt u uw eigen functie op uw sjablonen of plug-ins maken, u kunt het ook zo flexibel maken als u wilt. Daarom kunt u deze functie geïsoleerd maken voor uw sjablonen / plug-ins.

Ik hoop dat deze tutorial nuttig voor je is, laat me weten wat je ervan vindt. Je ideeën maken het beter, of laten me zelfs mijn fouten zien, je feedback zal echt veel helpen. Bedankt voor het lezen!


Voorkeur:

  • JSON-functies
  • Header PHP
  • Een WordPress-plug-in schrijven
  • add_menu_page WordPress-functie
  • add_submenu_page WordPress-functie
  • get_alloptions WordPress-functie