Opprette en enkel Backup / Restore Settings-funksjon

Alternativer er de viktigste dataene i WordPress, de lagrer ulike konfigurasjonsinnstillinger (se mer). De er også inneholdt i databasen som andre viktige data som innlegg, sider, etc. Dag for dag kan disse alternativene endres av WordPress selv eller brukere. Så hvordan kan du konfigurere dem tilbake til en tidligere tilstand uten å huske hver eksakt verdi?

I denne opplæringen skal jeg vise deg hvordan du lager en enkel backup / gjenopprettingsfunksjon for WordPress-bloggen din. Med denne funksjonen kan du sikkerhetskopiere alle alternativer til et annet sted, slik at du kan gjenopprette dem fra når som helst uten å konfigurere dem igjen.


Før vi begynner

Generelt har vår funksjon to seksjoner, en er en eksportseksjon for sikkerhetskopiering av data og en Import-seksjon for gjenoppretting av data. Så jeg vil demonstrere disse ved å lage en enkel plugin.


Trinn 1 Plugin Header

Først og fremst må jeg skrive noen linjer for å fortelle WordPress om vårt plugin.

 / * Plugin Name: I / E Alternativ Plugin URI: http://wp.tutsplus.com/ Beskrivelse: Dette er et eksempel på plugin med funksjonen for sikkerhetskopiering og gjenoppretting. Forfatter: Lee Pham Versjon: 1.0 Forfatter URI: http://twitter.com/leephamj * /

Og her er vårt resultat:


Trinn 2 Opprett en sideadministrator

Nå trenger vi et sted for å sette plugingrensesnittet, det viser to viktige funksjoner som ble nevnt ovenfor (inkludert Import og eksport-funksjoner). Så genererer jeg en side i administrasjonsdelen:

 funksjonsregister_i_option () add_menu_page ('IE-valgside', 'IE-alternativ', 'activ_plugins', 'ie-option', 'ie_option_page', ', 76); add_submenu_page (' ie-option ',' Import ' Import ',' activ_plugins ',' ie-import-option ',' ie_import_option_page '); add_submenu_page (' ie-alternativ ',' Eksporter ',' Eksporter ',' activ_plugins ',' ie-export-alternativ ',' ie_export_option_page '); funksjon ie_option_page () // Våre ting her funksjon ie_import_option_page () // Content Import Feature funksjon ie_export_option_page () // Content Export Feature add_action (' admin_menu ',' register_ie_option ');

Her er noen poeng:

  • Vi bruker add_menu_page som en innebygd WordPress-funksjon for å legge til et nytt toppnivå menyseksjon i administrasjonsmenyens sidebar og hvor ie_option_page parameteren er tilbakeringingsfunksjonen for utmatning av sidens innhold.
  • For å skille to hovedtrekk i forskjellige seksjoner, bruker vi add_submenu_page å legge dem til toppnivå menyen vi nettopp opprettet over. Som du ser, har hver funksjon også en tilbakeringingsfunksjon for å vise utdatainnhold som add_menu_page funksjon gjør. Det spiller ingen rolle om du fusjonerer disse til ett sted, jeg prøver bare å holde det klart.
  • Så hekker vi register_ie_option videre til admin_menu handling for å utløse vårt mål hver gang denne handlingen er kalt.

Trinn 3 Opprett eksportfunksjon

Jeg planlegger å opprette en Eksporter side slik:

Lag eksporter sideskjema

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

Eksport

Når du klikker Sikkerhetskopier alle alternativer knappen, vil systemet generere en JSON-fil for deg å lagre på datamaskinen din.

Denne sikkerhetskopien inneholder alle konfigurasjons- og innstillingsalternativer på vår nettside. Legg merke til at den gjør det IKKE inneholder innlegg, sider eller relevant informasjon, bare alle dine alternativer.

Etter eksport kan du enten bruke backupfilen til å gjenopprette innstillingene på dette nettstedet igjen eller et annet WordPress-nettsted.

Vi lager bare et skjema med en knapp og sjekker om knappen klikkes eller ikke. I tillegg legger vi til undervisningstekst ved hjelp av noen tilgjengelige WordPress CSS-klasser. For å gjøre en sikkerhetskontroll bruker jeg en wp_nonce_field () og check_admin_referer () funksjon, les mer om WordPress Nonces.

Navngi filnavnet til å bli generert

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

Bare navngi filen slik at du enkelt kan se hvor og når den ble eksportert.

Få sikkerhetskopieringsalternativer og kode inn i JSON-data

 $ options = get_alloptions (); foreach ($ alternativer som $ key => $ verdi) $ value = maybe_unserialize ($ value); $ need_options [$ key] = $ verdi;  $ json_file = json_encode ($ need_options);

Her er det viktige trinnet, la oss være oppmerksomme:

  • get_alloptions () er en funksjon som får alle mulighetene på nettstedet ditt og returnerer dem som en matrise, $ alternativer i dette tilfellet.
  • Ved å hente alle alternativene, kan verdien av alternativene være serialiserte data, så vi må unserialisere det først.
  • Vår hensikt er å generere JSON for å lagre sikkerhetskopieringsdataene. JSON er en lett og kraftig måte å lagre tekstinformasjon på. Så hva vi trenger å gjøre er å konvertere våre data til JSON-syntaks, json_encode hjelper oss med å nå dette målet.
 ob_clean (); ekko $ json_file; header ("Content-Type: text / json; charset =". get_option ('blog_charset')); header ("Content-Disposition: attachment; filnavn = $ json_name.json"); exit();

Da pakker vi inn innholdet i våre JSON-data innenfor to viktige funksjoner, ob_clean () og exit() For å sikre at vår genererte JSON-fil bare inneholder JSON-data som json_file holder uten andre data. Forresten sender vi en headerforespørsel til klienten som viser en nedlastingsdialog. For å gjøre dette arbeidet riktig skal vi sette ob_start () funksjonen øverst på plugin-koden, dette forhindrer overskriftsfeil, og det er kanskje litt ekstra mellomrom eller linjer et sted i WordPress-kode som kan føre til at.

"JSON (JavaScript Object Notation) er et lett datautvekslingsformat. Det er enkelt for mennesker å lese og skrive. Det er enkelt for maskiner å analysere og generere."

Så her er hele Export-funksjonskoden:

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

Eksport

Når du klikker Sikkerhetskopier alle alternativer knappen, vil systemet generere en JSON-fil for deg å lagre på datamaskinen din.

Denne sikkerhetskopien inneholder alle konfigurasjons- og innstillingsalternativer på vår nettside. Legg merke til at den gjør det IKKE inneholder innlegg, sider eller relevant informasjon, bare alle dine alternativer.

Etter eksport kan du enten bruke backupfilen til å gjenopprette innstillingene på dette nettstedet igjen eller et annet WordPress-nettsted.

$ verdi) $ verdi = maybe_unserialize ($ verdi); $ need_options [$ key] = $ verdi; $ json_file = json_encode ($ need_options); // Kode inn data i json data ob_clean (); ekko $ json_file; header ("Content-Type: text / json; charset =". get_option ('blog_charset')); header ("Content-Disposition: attachment; filnavn = $ json_name.json"); exit();

Trinn 4 Opprett importfunksjon

Denne siden oppgaven er ganske enkel, den viser et opplastingsskjema og analyserer data fra JSON-filen for å sikkerhetskopiere alternativene våre.

Lag Importer Page Skeleton

 funksjon ie_import_option_page () ?> 

Importere

Klikk Bla gjennom-knappen og velg en json-fil som du sikkerhetskopierer før.

Trykk Restore-knappen, WordPress gjør resten for deg.

Som Eksporter-siden lager vi et skjema, men denne gangen legger vi til Bla gjennom-knappen, slik at brukeren kan velge den filen de vil ha og sende den inn.

Validering og oppdatering av JSON-fil

 hvis (isset ($ _ FILES ['import'])) if ($ _FILES ['import'] ['error']> 0) wp_die ("Feil skjer");  ellers $ file_name = $ _FILES ['import'] ['name']; $ file_ext = strtolower (slutt (eksplodere (".", $ filnavn))); $ file_size = $ _FILES ['import'] ['size']; hvis (($ 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 => $ verdi) update_option ($ key, $ value);  ekko "

Alle alternativer gjenopprettes med hell.

"; else echo"

Ugyldig fil eller filstørrelse for stor.

";

Hvis opplastingsprosessen får feil, returner du bare en dørmelding "En feil har oppstått". Hvis ikke, få filens utvidelse og størrelse, lagre dem i variabler og sjekk dem. Vi aksepterer bare filer som har utvidelsen ".json" og størrelsen på mindre enn 500000 byte. Hvis filen ikke er en passende, bare vis en feilmelding "Ugyldig fil eller filstørrelse for stor.". Merk: Du kan endre denne størrelsen som du trenger.

Og så $ encode_options variabel vil få alt innhold i denne filen. Siden filen inneholder JSON-data, må vi først dekode først før du bruker den. For å gjøre dette bruker vi json_decode med en andre parameter som har en ekte verdi, slik at denne funksjonen returnerer en matriseverdi. Med en array verdi begynner vi å sløyfe over det. På hver iterasjon vil vi oppdatere data med samme nøkkel og verdien. Til slutt vil alle våre alternativer bli gjenopprettet akkurat som de var, og en vellykket melding vil bli vist.

Og her er hele Import-funksjonskoden:

 funksjon ie_import_option_page () ?> 

Importere

0) wp_die ("Feil skjer"); ellers $ file_name = $ _FILES ['import'] ['name']; // Få navnet på filen $ file_ext = strtolower (slutt (eksplodere (".", $ Filnavn))); // Få utvidelse av fil $ file_size = $ _FILES ['import'] ['size']; // Få størrelse på fil / * Kontroller at opplastet fil er JSON filtype og størrelsen ikke over 500000 byte * Du kan endre størrelsen du vil ha * / 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 => $ verdi) update_option ($ key, $ value); ekko "

Alle alternativer gjenopprettes med hell.

"; else echo"

Ugyldig fil eller filstørrelse for stor.

";?>

Klikk Bla gjennom-knappen og velg en json-fil som du sikkerhetskopierer før.

Trykk Restore-knappen, WordPress gjør resten for deg.


Lag din egen sikkerhetskopieringsfunksjon for dine maler eller plugins

I prøvepluggen sikkerhetskopierte jeg alle nettstedvalgene ved å bruke get_alloptions WordPress-funksjon. Hvis du vil bruke dette til dine egne spesifikke alternativer, gjør du det slik:

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

Og gå videre til neste trinn som ovenfor. Du velger fritt hvilke alternativer du vil sikkerhetskopiere!


Konklusjon

I denne veiledningen tar vi en titt på en oversikt over hvordan du oppretter en enkel sikkerhetskopierings- / gjenopprettingsfunksjon. Du bør legge merke til at min plugin er bare en enkel prøve, ikke en offisiell. Målet mitt er ikke å skrive et perfekt plugin, men å vise deg det grunnleggende prinsippet i denne funksjonen. Ved å forstå det, kan du lage din egen funksjon på maler eller plugins, du kan også gjøre det så fleksibelt som du vil. Derfor kan du gjøre denne funksjonen isolert for maler / plugins.

Jeg håper denne opplæringen er nyttig for deg, gi meg beskjed om hva du synes. Dine ideer gjør det bedre, eller til og med vise meg mine feil, din tilbakemelding vil virkelig hjelpe mye. Takk for at du leste!


Preference:

  • JSON-funksjoner
  • Header PHP
  • Skrive et WordPress-plugin
  • add_menu_page WordPress-funksjon
  • add_submenu_page WordPress-funksjon
  • get_alloptions WordPress-funksjon