Creazione di una semplice funzionalità di impostazioni di backup / ripristino

Le opzioni sono i dati più importanti in WordPress, memorizzano varie impostazioni di configurazione (vedi di più). Sono anche contenuti nel database come altri dati importanti come post, pagine, ecc. Giorno dopo giorno, queste opzioni possono essere modificate da WordPress stesso o dagli utenti. Quindi, come riconfigurarli a uno stato precedente senza memorizzare ogni valore esatto?

In questo tutorial, ti mostrerò come creare una semplice funzionalità di backup / ripristino per il tuo blog WordPress. Con questa funzione, è possibile eseguire il backup di tutte le opzioni in un altro punto, da cui è possibile ripristinarle in qualsiasi momento senza configurarle nuovamente.


Prima di iniziare

In generale, la nostra funzione avrà due sezioni, una è una sezione di esportazione per il backup dei dati e una sezione di importazione per il ripristino dei dati. Quindi li dimostrerò creando un semplice plugin.


Passo 1 Plugin Header

Prima di tutto, devo scrivere alcune righe per dire a WordPress del nostro plugin.

 / * Nome plugin: URI plug-in opzione I / E: http://wp.tutsplus.com/ Descrizione: questo è un plug-in di esempio con funzionalità di backup e ripristino. Autore: Lee Pham Versione: 1.0 Autore URI: http://twitter.com/leephamj * /

Ed ecco il nostro risultato:


Passaggio 2 Creare un amministratore della pagina

Ora abbiamo bisogno di un posto dove mettere la nostra interfaccia per i plugin, mostra due caratteristiche chiave che sono state menzionate sopra (incluse le funzionalità di importazione ed esportazione). Così ho generato una pagina nella sezione di amministrazione:

 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', 'Import', ' Importa ',' 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 ') Funzione function ie_option_page () // Our stuff here function ie_import_option_page () // Funzione Content Import function ie_export_option_page () // Funzione di esportazione del contenuto add_action (' admin_menu ',' register_ie_option ');

Ecco alcuni punti:

  • Noi usiamo add_menu_page come funzione WordPress integrata per aggiungere una nuova sezione del menu di primo livello nella barra laterale del menu di amministrazione e dove ie_option_page parametro è la funzione di callback per l'output del contenuto della pagina.
  • Per separare due caratteristiche principali in diverse sezioni, usiamo add_submenu_page per aggiungerli al menu di livello superiore che abbiamo appena creato sopra. Come vedi, ciascuna funzione ha anche una funzione di callback per visualizzare il contenuto di output come il add_menu_page la funzione fa. Non importa se li unisci in un unico posto, cerco solo di tenerlo chiaro.
  • Quindi agganciamo register_ie_option sul admin_menu azione al fine di attivare il nostro obiettivo ogni volta che viene chiamata questa azione.

Passaggio 3 Creare una funzione di esportazione

Ho intenzione di creare una pagina di esportazione come questa:

Crea scheletro pagina di esportazione

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

Esportare

Quando si fa clic Backup di tutte le opzioni pulsante, il sistema genererà un file JSON che potrai salvare sul tuo computer.

Questo file di backup contiene tutte le opzioni di configurazione e impostazione sul nostro sito web. Nota che lo fa NON contiene post, pagine o qualsiasi dato rilevante, solo le tue opzioni.

Dopo l'esportazione, è possibile utilizzare il file di backup per ripristinare nuovamente le impostazioni su questo sito o su un altro sito WordPress.

Creiamo semplicemente un modulo con un pulsante e controlliamo se il pulsante viene cliccato o meno. Inoltre, aggiungiamo del testo di istruzioni usando alcune classi CSS di WordPress disponibili. Per fare un controllo di sicurezza, io uso un wp_nonce_field () e il check_admin_referer () funzione, leggi di più su WordPress Nonces.

Denominazione del nome file da generare

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

Basta dare un nome al file in modo da poter vedere facilmente dove e quando è stato esportato.

Ottieni opzioni di backup e codifica in dati JSON

 $ options = get_alloptions (); foreach ($ opzioni come $ chiave => valore $) $ valore = forse_unserialize (valore $); $ need_options [$ key] = $ valore;  $ json_file = json_encode ($ need_options);

Ecco il passo importante, prestiamo attenzione:

  • get_alloptions () è una funzione che ottiene tutte le opzioni sul tuo sito e le restituisce come una matrice, $ options in questo caso.
  • Recuperando tutte le opzioni, il valore delle opzioni può essere dati serializzati, quindi dobbiamo prima digitalizzarlo per prima.
  • La nostra intenzione è generare JSON per memorizzare i dati di backup. JSON è un modo leggero e potente per archiviare informazioni di testo. Quindi quello che dobbiamo fare è convertire i nostri dati in sintassi JSON, json_encode ci aiuta a raggiungere questo obiettivo.
 ob_clean (); echo $ json_file; intestazione ("Content-Type: text / json; charset =". get_option ('blog_charset')); intestazione ("Content-Disposition: attachment; filename = $ json_name.json"); Uscita();

Quindi avvolgiamo il contenuto dei nostri dati JSON in due importanti funzioni, ob_clean () e Uscita() per garantire che il nostro file JSON generato contenga solo dati JSON json_file tiene senza altri dati. A proposito, inviamo una richiesta di intestazione al client che visualizza una finestra di dialogo di download. Per farlo funzionare correttamente dovremmo mettere il ob_start () funzione nella parte superiore del nostro codice plugin, questo impedisce che si verifichino errori di intestazione, forse ci sono degli spazi bianchi o linee extra da qualche parte nel codice WordPress che potrebbero causare.

"JSON (JavaScript Object Notation) è un leggero formato di interscambio di dati, è facile per gli utenti leggere e scrivere, è facile per le macchine analizzare e generare".

Quindi ecco l'intero codice della funzione Export:

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

Esportare

Quando si fa clic Backup di tutte le opzioni pulsante, il sistema genererà un file JSON che potrai salvare sul tuo computer.

Questo file di backup contiene tutte le opzioni di configurazione e impostazione sul nostro sito web. Nota che lo fa NON contiene post, pagine o qualsiasi dato rilevante, solo le tue opzioni.

Dopo l'esportazione, è possibile utilizzare il file di backup per ripristinare nuovamente le impostazioni su questo sito o su un altro sito WordPress.

$ valore) $ valore = forse_unserialize (valore $); $ need_options [$ key] = $ valore; $ json_file = json_encode ($ need_options); // codifica i dati in json data ob_clean (); echo $ json_file; intestazione ("Content-Type: text / json; charset =". get_option ('blog_charset')); intestazione ("Content-Disposition: attachment; filename = $ json_name.json"); Uscita();

Passaggio 4 Creare la funzione di importazione

L'attività di questa pagina è abbastanza semplice, visualizza un modulo di caricamento e analizza i dati dal file JSON per eseguire il backup delle nostre opzioni.

Crea Importa scheletro pagina

 function ie_import_option_page () ?> 

Importare

Fai clic sul pulsante Sfoglia e scegli un file json di cui hai eseguito il backup in precedenza.

Premi il pulsante Ripristina, WordPress fa il resto per te.

Come la pagina di esportazione, creiamo un modulo, ma questa volta aggiungiamo un pulsante Sfoglia in modo che l'utente possa scegliere il file che desidera e inviarlo.

Convalida e aggiornamento del file JSON

 if (isset ($ _ FILES ['import'])) if ($ _FILES ['import'] ['error']> 0) wp_die ("Errore succede");  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 => valore $) update_option ($ key, $ value);  eco "

Tutte le opzioni sono ripristinate correttamente.

"; else echo"

Dimensione del file o file non valida troppo grande.

";

Se il processo di caricamento riceve degli errori, basta restituire un messaggio di matrice "Si è verificato un errore". In caso contrario, ottenere l'estensione e la dimensione del file, memorizzarli in variabili e controllarli. Accettiamo solo file con estensione ".json" e dimensioni inferiori a 500000 byte. Se il file non è appropriato, visualizza semplicemente un messaggio di errore "File non valido o dimensioni del file troppo grandi".. Nota: È possibile modificare questa dimensione in base alle proprie esigenze.

Poi il $ encode_options variabile otterrà tutto il contenuto di questo file. Dato che il file contiene dati JSON, prima di usarlo dobbiamo prima decodificare. Per fare questo, usiamo json_decode con un secondo parametro che ha un valore vero, quindi questa funzione restituisce un valore di matrice. Con un valore di matrice, iniziamo a passarci sopra. Ad ogni iterazione, aggiorneremo i dati con la stessa chiave e il suo valore. Alla fine, tutte le nostre opzioni verranno ripristinate esattamente come erano e verrà visualizzato un messaggio di successo.

Ed ecco l'intero codice della funzione di importazione:

 function ie_import_option_page () ?> 

Importare

0) wp_die ("Errore accade"); else $ file_name = $ _FILES ['import'] ['name']; // Ottieni il nome del file $ file_ext = strtolower (end (explode (".", $ File_name))); // Ottieni l'estensione del file $ file_size = $ _FILES ['import'] ['size']; // Ottieni dimensione del file / * Assicurati che il file caricato sia di tipo JSON e la dimensione non superi i 500000 byte * Puoi modificare la dimensione desiderata * / 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 => valore $) update_option ($ key, $ value); eco "

Tutte le opzioni sono ripristinate correttamente.

"; else echo"

Dimensione del file o file non valida troppo grande.

";?>

Fai clic sul pulsante Sfoglia e scegli un file json di cui hai eseguito il backup in precedenza.

Premi il pulsante Ripristina, WordPress fa il resto per te.


Crea la tua funzione di backup per i tuoi modelli o plugin

Nel plug-in di esempio, ho eseguito il backup di tutte le opzioni del sito utilizzando get_alloptions Funzione WordPress Se vuoi applicarlo alle tue specifiche opzioni, fallo in questo modo:

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

E vai al prossimo passo come sopra. Puoi scegliere liberamente quali opzioni vuoi eseguire il backup!


Conclusione

In questo tutorial, diamo un'occhiata a una panoramica sulla creazione di una semplice funzionalità di backup / ripristino. Dovresti notare che il mio plugin è solo un semplice esempio non ufficiale. Il mio obiettivo non è scrivere un plugin perfetto, ma per mostrarti il ​​principio di base di questa funzionalità. Comprenderlo, puoi creare la tua funzione sui tuoi modelli o plug-in, puoi anche renderla flessibile come desideri. Pertanto puoi rendere questa funzione isolata per i tuoi modelli / plug-in.

Spero che questo tutorial ti sia utile, fammi sapere cosa ne pensi. Le tue idee migliorano, o addirittura mi mostrano i miei errori, il tuo feedback sarà davvero di grande aiuto. Grazie per aver letto!


Preferenza:

  • Funzioni JSON
  • Intestazione PHP
  • Scrivere un plugin WordPress
  • add_menu_page Funzione WordPress
  • add_submenu_page Funzione WordPress
  • get_alloptions Funzione WordPress