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.
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.
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:
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:
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.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.register_ie_option
op de ADMIN_MENU
actie om ons doel te activeren telkens als deze actie wordt genoemd.Ik ben van plan om een exportpagina als deze te maken:
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 decheck_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.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'])) ?>$ 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();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.
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.
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 ""; else echo"Alle opties zijn succesvol hersteld.
";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 wejson_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 ""; else echo"Alle opties zijn succesvol hersteld.
";?>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:
add_menu_page
WordPress-functieadd_submenu_page
WordPress-functieget_alloptions
WordPress-functie