I collegamenti monouso possono essere utilizzati in una varietà di situazioni: al fine di fornire un accesso temporaneo al file o alla pagina o per confermare la registrazione. In questa lezione, mostreremo come generare e implementare indirizzi URL usa e getta.
Creando URL.
Supponiamo che il nostro sito abbia un sistema di autenticazione utente. Dopo la registrazione, chiediamo all'utente di passare la procedura di verifica e-mail. Per creare tali collegamenti possiamo utilizzare il parametro token speciale. Un esempio di tale collegamento:
Http: //example.com/activeVate? Token \u003d EE97780 ...
Senza un database, non possiamo fare qui, quindi guardiamo al tavolo con il quale lavoreremo.
Crea tabella Pending_USERS (Token Char (40) Non NULL, Nome utente Varchar (45) Non nullo, Tstamp Integer Unsigned non null , chiave primaria (token);
Nel tavolo memorizzeremo 3 campi: token, nome utente e tempo. Per generare un token, useremo la funzione SHA1 (), che fornisce una stringa di 40 caratteri. Il campo TSPAMP memorizzerà il tempo di generazione del token in modo che possiamo tenere traccia dei collegamenti con un outpher.
Ci sono molti modi per generare un token, ma in questa lezione useremo le funzioni UNIQID () e SHA1 () (). Indipendentemente dal metodo di generare un token, assicurarsi che i valori generati siano diversi e la probabilità di duplicazione è minima.
$ token \u003d SHA1 (UNIQID ($ Username, TRUE));
Come parametro, la funzione UNIQID () prende la stringa e l'uscita fornisce un identificativo univoco in base all'argomento trasmesso e all'ora corrente. Inoltre, come secondo argomento, questa caratteristica Accetta un valore booleano che l'UNIQID aggiungerà alcuni caratteri aggiuntivi per aumentare la probabilità dell'unicità del valore. La funzione SHA1 prende un identificativo univoco e crea un hash.
Dopo aver lavorato su due funzioni, avremo un token unico che può essere utilizzato per generare indirizzi dell'URL. Ora dobbiamo metterlo nel database:
$ Query \u003d $ DB-\u003e Prepara ("Inserisci in Valori Pending_USer (Nome utente, Token, TStamp) (?,?)"); $ Query-\u003e Execute (array ($ username, $ token, $ _server ["request_time"]));
Per consentirci di sapere quale utente dovrebbe essere attivato, registreremo e accederemo alla tabella. Ad esempio, più adattato per un sito web reale, è possibile utilizzare l'ID utente.
Ora che abbiamo tutti le informazioni necessarie, Possiamo creare un indirizzo URL temporaneo:
$ url \u003d "http://example.com/activate.php?token\u003d$token";
$ Messaggio \u003d.<< Ora abbiamo bisogno di una sceneggiatura, grazie a cui controlleremo. Tutto ciò che dobbiamo fare è confrontare il token dall'indirizzo URL e il token dalla base. Se c'è una cosa del genere, e il tempo della sua vita non è scaduto, allora tutto è ok. // Ottieni se Token (ISSET ($ _ Ottieni ["Token"]) && preg_match ("/ ^ (40) $ / i", $ _get ["token"])) ($ token \u003d $ _get ["token" ];) Altro (lanciare una nuova eccezione ("Tocken non è valida".);) // Verifica $ Query \u003d $ db-\u003e preparare token ("Seleziona nome utente, Tstamp da Pending_User dove Token \u003d?"); $ Query-\u003e Execute (array ($ token)); $ riga \u003d $ query-\u003e recupera (PDO :: fetch_assoc); $ Query-\u003e closecursor (); se ($ riga) (estratto ($ riga);) altrimenti (lanciare una nuova eccezione ("Tocken non è valida".);) // Attivare l'account utente // ... // Rimuovere il token dalla base $ query \u003d $ DB\u003e Prepara ("Elimina da Pending_USERS dove nome utente \u003d? E token \u003d? E tstamp \u003d?",); $ Query-\u003e Execute (array ($ username, $ token, $ tstamp)); Abbiamo anche bisogno di fornire test di token, la cui vita è scaduta: // 1 giorno in secondi \u003d 60 secondi * 60 minuti * 24 ore $ delta \u003d 86400; // controlla se ($ _server ["request_time"] - $ tstamp\u003e $ delta) (lanciare una nuova eccezione ("Tocken Lifetime scaduta");) // attiva l'account personalizzato // ... Pertanto, avremo due controlli: uno sulla validità del token, l'altro al momento della sua esistenza. Questo metodo può essere applicato non solo per attivare conti Utenti, ma anche in altre esigenze: ad esempio, per fornire un accesso singolo o temporaneo a una risorsa o un servizio. Oltre a tutto questo, è possibile creare uno script che rimuoverà i token che non hanno mai usato. Questo script può essere lanciato di volta in volta o richiedere questo cron. Gli argomenti non sono solitamente funzionali, ma a volte noi, gli sviluppatori, è necessario introdurre alcune possibilità nel nostro argomento per renderlo un po 'meglio e conveniente. In questa guida, considereremo il termine "territorio dei plugin", oltre ad apprendere come utilizzare uno strumento fantastico scritto da Thomas Griffin: TGM Plugin Activation Library. I temi sono progettati per cambiare la progettazione del sito web WordPress. Idealmente, l'argomento dovrebbe influenzare solo l'aspetto visivo. Tuttavia, nella nostra "Golden Age" WordPress, gli sviluppatori plug-in spesso includono caratteristiche funzionali nei loro argomenti che ti consentono di mantenere la competitività nel mercato. Questa è l'invasione del territorio dei plugin. Possiamo presentare il "territorio dei plugin" come alcune sezioni funzionali del codice. Qualsiasi snippet di codice che cambia la funzionalità del tuo sito deve essere rappresentato come un plug-in se il codice specificato non viene posato nel kernel WordPress. Ho già formulato prima in uno dei miei articoli una regola empirica "Plugin del territorio: Se la peculiarità è correlata alla rappresentazione visiva del sito, in questo caso dovrebbe essere inclusa nell'argomento; Se è associato alla funzionalità, allora deve essere rappresentato come un plug-in separato. Regola piuttosto semplice. Le persone cercano ancora di registrarsi nel livello dei frammenti funzionali del codice nei loro argomenti, ma i cataloghi dei temi (come wordpress.org o temaform) non prendono temi che invadono il territorio dei plugin. Pertanto, la proposta di funzionalità nei temi è diventata un certo problema. Fortunatamente, c'è una soluzione semplice che non va contro la regola del "territorio dei plugin". Prestare attenzione alla funzione TGMPA () con due parametri alla fine del codice. Il secondo parametro è la variabile $ config, che è anche un array, come $ plugin. Come segue dal suo nome, è possibile configurare la libreria di attivazione del plugin TGM utilizzando di questo massiccio. La variabile accetta il proprio insieme di opzioni: Come puoi vedere, suggerire funzionalità in temi Wordpress. Forse - devi solo pensare prima di tutto sugli utenti che possono passare da un argomento all'altro. La libreria di attivazione del plugin TGM offre un modo davvero intelligente per questo. Cosa ne pensi di questo strumento? L'hai mai usato, hai intenzione di usarlo in futuro? Condividi i tuoi pensieri! Crea la tua pagina di registrazione per MultiSite anziché standard WP-signup.php. Nella consueta installazione Pagina di Wordpress. Registrazione (Autorizzazione, Ripristino password) Visualizza il file WP-LOGIN.php. Per multiite in wp-login.php ci sono condizioni separate. Quindi, quando fai clic sul collegamento /wp-login.php?action\u003dRegister su MultisAite, WordPress effettuerà un reindirizzamento alla pagina /WP-SignUp.php. In molti argomenti, la pagina non sembra molto attraente, quindi faremo il nostro. Per impostazione predefinita, Wordpress apre la pagina di registrazione (WP-signup.php) sulla rete principale del dominio (sito Web). Tuttavia, è possibile effettuare una pagina di registrazione separata per ciascun sito di rete, anche se hanno argomenti diversi. Considereremo il caso quando su tutti i siti di rete dispongono della propria pagina di registrazione, ma lo stesso argomento è utilizzato e i siti differiscono solo nella lingua. Se vengono utilizzati argomenti diversi, dovrai scrivere più codice. Non. Il nome di questo file sembra essere menzionato in qualsiasi articolo su WordPress. Nel nostro caso, tenendo conto del fatto che la funzionalità di registrazione è progettata per diversi siti, ha senso prenderlo in mu-plugin che vengono caricati all'apertura di qualsiasi sito. Vale la pena notare che i plugin MU sono caricati prima dei plugin ordinari e fino a quando il kernel WordPress è completamente caricato, quindi la chiamata per alcune funzioni può portare a bug fatali in PHP. Simili download "anticipato" ha i suoi vantaggi. Diciamo che all'interno di qualsiasi tema non può aggrapparsi ad alcune azioni attirate prima di scaricare il file Functions.php dall'argomento. Un esempio di questo può fungere da jetpack_module_loaded_related-Posts Plugin (post correlati - il nome del modulo) con cui è possibile tenere traccia dell'attività dei moduli in Jetpack. È impossibile "frizione" dal file argomento a questa azione, poiché l'azione ha già funzionato prima di caricare l'argomento - i plugin sono caricati in precedenza. Puoi dare un'occhiata all'immagine comune dell'ordine di avvio WordPress nella pagina di riferimento dell'azione nel codice. MU-Plugin può contenere un numero qualsiasi di file e qualsiasi grafico, che sembrerà logico per te. Aderire a una tale gerarchia: | -MU-Plugins | - | Load.php | - | - | Selena-Network | - | - | - | - -Signup | - | - | - | - | --plugin.php | - | - | - | - | -... | - | - | - | -jetpack | - | - | - | - | - -plugin.php Nel file Load.php, tutti i "plugin" necessari sono collegati alla nostra rete: Carica Traslates per tutti i componenti aggiuntivi Load_MUplugin_TextDomain ("Selena_Network", "/ Selena-Network / Lingue /"); // Iscrizione alla rete richiede wpmu_plugin_dir. "/selena-network/signup/plugin.php"; // Un altro plugin // Richiedi wpmu_plugin_dir ... All'interno della cartella di Selena-Network, vengono memorizzate le cartelle dei plug-in, ognuna ha il proprio plugin.php, che ci colleghiamo su load.php. Dà flessibilità e la capacità di disabilitare rapidamente e includere alcune cose. Per specificare l'indirizzo della pagina di registrazione, utilizzare il filtro WP_SignUp_Location. Si può trovare all'interno del file wp-login.php ed è lui che è responsabile per il reindirizzamento sul wp-signup.php. Caso "Registrato": if (IS_Multisite ()) (WP_REDIRECT (Apply_Fireders ("WP_Signup_Location", Network_site_url ("WP-signup.php"))); Esci; Aggiungi la tua funzione in MU-Plugin / Selena-Network / Signup / Plugin.php, che fornirà all'indirizzo della pagina di registrazione sul sito Web corrente: Funzione selena_network_signup_page ($ URL) (ritorno home_url (). "/ Iscriviti /";) add_filter ("wp_signup_location", "selena_network_signup_page", 99); selena_network - prefisso, che uso nei nomi di tutte le funzioni all'interno del MU-Plugin sul mio sito per evitare conflitti, deve essere sostituito con il proprio prefisso unico. La priorità di aggiungere il filtro 99, poiché alcuni plugin, come BBPress e Buddypress, possono sovrascrivere questo indirizzo ai propri (MU-Plugin vengono caricati prima dei plugin convenzionali, vedere sopra). Si noti che Home_url () viene utilizzato, invece di network_site_url (), per lasciare il visitatore sullo stesso dominio. Puoi usare qualsiasi URL come indirizzo. Ora creiamo una pagina con sito.com/signup/ attraverso un'interfaccia regolare, e nel modello di cartella della struttura figlia per la nostra nuova pagina - pagina-signup.php. Invece della parola "Iscriviti" è possibile utilizzare un ID univoco. All'interno del nuovo modello, è necessario chiamare la funzione selena_network_signup_main (), che mostrerà il modulo di registrazione. Vale la pena notare che l'intero processo con i modelli non è richiesto e invece è possibile creare il tuo shortcode, che chiamerà anche la funzione selena_network_signup_main (). Ora creeremo una funzione che mostrerà il modulo di registrazione. Per fare ciò, copiare i file WP-signup.php e wp-activate.php dal root wordpress in mu-plugings / selena-network / iscrizione / (e non dimenticare di collegarli all'interno di MU-Plugin / Selena-Network / Iscrizione / plugin.php). Ulteriori manipolazioni con i file sono estremamente difficili e lunghe da descrivere, quindi vieni a renderli da soli. Descriverò solo cosa deve essere fatto esattamente e pubblicare i file sorgente del tuo progetto: All'interno del wp-activate.php devi fare allo stesso modo: Il file WP-Activate.php è responsabile della pagina di attivazione dell'account. Come con la pagina di registrazione, è necessario creare un modello separato all'interno della quale chiamare una funzione dal file WP-Attiva.php. La pagina di registrazione invia una lettera al visitatore con riferimento all'attivazione dell'account. Per impostazione predefinita, questa è la funzione WPMU_SignUp_User_Notification () dal file MS-Funts.php. La sua funzionalità può essere presa in prestito per la sua funzione. Il motivo per cui si desidera rifiutare di utilizzare questa funzione: invia un riferimento di attivazione dell'account con WP-Activate.php. È possibile disabilitare questa funzione utilizzando il filtro WPMU_Signup_User_Notification spostando il falso su di esso (se questo non è da fare, la lettera di attivazione verrà inviata due volte, ok, infatti due lettere diverse). Funzione Armyofselenagomez_wpmu_signup_User_Notification ($ utente, $ user_mail, $ key, $ meta \u003d array ()) (// ... // codice da wpmu_signup_User_nitification () Funzione wp_mail ($ user_email, wp_specialchars_decode ($ soggetto), $ Message, $ message_headers ); Restituire false;) add_filter ("wpmu_signup_user_nitificazione", "armyoflegengenagomez_wpmu_signup_user_nitificazione", 10, 4); Di conseguenza, la pagina di registrazione nell'argomento di Selena ha iniziato a sembrare molto più pulito e attento. Su Internet, molti altri non sono molto modi giusti Come fare gli stessi - Reindirizzamenti Apache, Forme Ajax che non funzionerà senza script Java, ecc. Non mi piaceva molto, quindi ho provato a farlo più correttamente sul mio sito. Noto che i file di modifica dovrebbero essere in grado di essere attentamente e cercare di non allontanarti dalla sorgente alla ranknesh, se WordPress cambia i file WP-signup.php e wp-activate.php, erano più facili da confrontare per trovare modifiche . Non dimenticare di guardare fonte Tutte le funzioni sopra descritte per affrontare appieno cosa e cosa succede all'interno del codice. Anche i siti più giovani su WordPress sono spesso soggetti alla registrazione dello spam. È possibile scrivere condizioni infinite per il filtraggio dei bot, spesso più simili a provare a creare intelligenza artificiale 🙂 Nel caso di un multite, un reindirizzamento regolare di Apache mi ha aiutato, con il quale quando si apre /wp-signup.php e /wp-acitVate.php, ho chiesto di emettere 404 (non sono un esperto di configurazione di Apache, quindi il mio Le regole potrebbero non essere molto corrette). Rewriteengine su RewriteBase / Rewriterule ^ WP-signup \\ .php - Rewriterule ^ wp-attiva \\ .php - # Inizia Wordpress # Regole da Wordpress per impostazione predefinita Non toccare :) # ... # fine wordpress P. S. Cerco di descrivere alcune cose di terze parti come in dettaglio il più possibile, perché quando ho iniziato, a volte era in qualche modo dire di dire e spiegare molte cose. Credo anche che piccoli consigli simili su altri materiali qualcuno sarà spinto allo studio di qualcosa di nuovo ed espandendo il loro campo di conoscenza. Le espressioni regolari sono utilizzate nei record di Reriterule, non sono completamente complessi, ad esempio, il simbolo ^ indica l'inizio della linea. Registra una funzione che verrà attivata durante l'attivazione del plugin. Questa funzione collega la funzione di richiamata specificata al gancio di attivazione_ (plugin) ed è un wrapper per questo gancio. (Plugin) nel gancio Attiva_ (plugin) viene sostituito dal nome del relativo consentono al file plug-in principale. Ad esempio, se si trova il plugin: wp-content / plugin / sampleplugin / sample.php, quindi il nome del hook sarà: attivare_samplePlugin / sample.php. Dalla versione 3.1. Gancio funziona solo durante l'attivazione del plugin e non funziona durante aggiornamento automatico collegare. Il plugin è attivato dalla funzione di attivazione_plugin () in cui viene attivato il gancio di attivazione_ (plugin). La funzione di attivazione_plugin () nel kernel viene invocata già dopo aver caricato il mezzo VP. Questa funzione collega il file plug-in master (e tutto ciò che è specificato in esso), quindi attraverso un gancio attiva la funzione di richiamata specificata. A causa di ciò, tutte le funzioni e le classi del plug-in sono disponibili nella nostra funzione di callback. Ma, poiché tutti i ganci principali del WP hanno già lavorato durante l'avvio medio IT, non ci sono eventi plug-in sono appesi a ganci, ad esempio plugins_loaded, non funzionano più quando si collega il file principale del plug-in. Quindi, il nostro plugin sarà collegato, ma non completamente: non come dovrebbe connettersi quando è già attivato. Ad esempio, se il plugin rende qualsiasi cosa durante il plugin dell'evento_loadato, quindi tutte queste azioni semplicemente non accadranno quando l'attivazione del plug-in. Ad esempio, se collega il file di traduzione, il file di traduzione non sarà collegato al momento di attivare la funzione di callback specificata per register_activation_Hook (). Di norma, dopo che la funzione di richiamata viene attivata, ci sono 2 eventi per appendere le funzioni: attivato_plugin e spegnimento. Per fare qualcosa di straordinario quando il plugin è attivato, vedere Esempio 5. La funzione non funzionerà se lo chiami al momento del gancio, ad esempio Plugins_loaded, init. La funzione deve essere chiamata direttamente dal file principale del plug-in. Regole di attivazione: register_Activation_Hook () deve essere chiamato dal file Plugin master, da cui si trova la direttiva sul nome del plug-in: ... e non dovrebbe essere chiamato da alcuna gancio, come plugins_loaded o init. La funzione gancio dovrebbe essere nello stesso file come gancio o connettersi in anticipo da un altro file. La funzione del gancio non funziona sullo schermo (eco). Perché il reindirizzamento e l'eco si svolgono. Ma puoi usare Die (). Quando si attiva il plug-in, il file plug-in principale non è collegato nell'area globale, ma all'interno della funzione di attivazione_plugin (). Pertanto, variabili che come al solito in modalità Il lavoro del plugin è considerato globale, non sarà globale. Quindi, la funzione utilizzata in Retist_Activation_Hook () potrebbe non vedere le variabili globali, anche se li ha dichiarati globali all'interno di questa funzione. Esempio: $ Myvar \u003d "qualcosa"; register_activation_hook (__ file__, "myplugin_activate"); Funzione myplugin_active () (Global $ myvar; echo $ myvar; // La variabile non è uguale a "qualcosa") A causa di questa funzione, dovrebbero sempre essere specificate le variabili globali. Tutte le variabili globali devono essere definite come globali, anche se la variabile è indicata nel corpo del plug-in. Solo in questo caso sarà accessibile a loro ovunque. Esempio: Global $ myvar; // indica chiaramente che questa è una variabile globale $ myvar \u003d "qualcosa"; register_activation_hook (__ file__, "myplugin_activate"); Funzione myplugin_active () (Global $ myvar; echo $ myvar; //\u003e qualcosa) Nessun gancio. nULLO. Niente ritorna. Nome della funzione di callback. Per le classi, usa un array: array ($ questo, "nome della funzione"); . La funzione riceverà una variabile logica $ Network_wide - se il plugin è attivato per l'intera rete di siti, con multisaite. Supponiamo di avere una funzione my_plugin_activate () nel file principale del plugin: WP-content / plugin / myplugin / myplugin.php, quindi per avviare questa funzione durante l'attivazione del plugin, utilizzare un codice tale: Register_activation_hook (__ file__, "my_plugin_active"); Funzione my_plugin_activate () (// codice di attivazione ...) Se il plugin utilizza la classe PHP, il codice di attivazione viene aggiunto come: Register_activation_hook (__ file__, array ("my_plugin", "installa")); Classe my_plugin (installazione della funzione statica () (// Non creare alcun output qui ...)) Se la classe che contiene la funzione di attivazione è in file separato, quindi registrare la funzione di attivazione come segue: Include_once __dir__. "/class-my_plugin.php"; Register_Activation_Hook (__ file__, array ("my_plugin", "on_activate_function")); Se sei dentro __construct (). Importante, __file__ dovrebbe "guardare" al file del plugin master: Register_Activation_Hook (__ file__, array ($ questo, "your_method_name")); Dopo aver attivato il plugin, vengono attivati \u200b\u200bsolo due ganci: attivato_plugin e spegnimento. Quando è necessario eseguire qualsiasi cosa immediatamente dopo aver attivato il plugin, è possibile allegare la funzione a loro. Quando questa soluzione non è adatta, è possibile utilizzare le opzioni WP: Salvare i dati sull'opzione e quindi controllare la disponibilità dell'opzione e fare qualcosa se l'opzione è: // file plug-in principale. ... Funzione my_plugin_activate () () (// Aggiungi un'opzione a quel punto se è fare nulla. ADD_OPTION ("ACTIIN_PLUGIN", "Plugin-Slug"); // qui Codice di attivazione ...) Register_Activation_Hook (__ file__ " my_plugin_activate "); Funzione load_plugin () (se (IS_ADMIN () && GET_OPTION ("ACTIVED_PLUGIN") \u003d\u003d "Plugin-slug") (// rimuovere l'opzione aggiunta in modo che non funzioni più // e fare ciò di cui hai bisogno ... Delete_Option ("Attivato_plugin"); // crea qualsiasi cosa, dopo aver attivato il plug-in // ad esempio: add_action ("init", "my_init_function");)) add_action ("admin_init", "load_plugin"); Un'altra opzione per fare qualcosa durante l'attivazione del plug-in è creare il tuo evento come questo: Funzione my_plugin_activate () () (// installa il gancio in modo da poter andare dal plugin do_action stesso ("my_plugin_active");) register_activation_hook (__ file__, "my_plugin_active"); Un piccolo plugin che dimostra come utilizzare la funzione: / * Nome del plug-in: una descrizione del test: un test * / Richiesta_once dirname (__ file__). "/my_other_file.php"; / * Questo codice non funzionerà. Il gancio di attivazione deve essere chiamato dal file principale. Register_Activation_Hook (Dirname (__ file__). "/My_other_file.php", "my_other_function"); * / // Questo è un codice di lavoro. Register_activation_Hook (__ file__, "test_attivated"); / * Questa è l'opzione di annuncio corretta e l'accesso alle variabili globali. Le variabili globali dovrebbero essere dichiarate chiaramente. Senza questo non avrai accesso a loro. * / Global $ qualche_var; $ some_var \u003d "hey"; // Funzione Test_Active () (l'opzione non funzionerà. Se è necessario registrare registri su un file temporaneo, utilizzare fopen / fwrite. Se si desidera controllare se il gancio di attivazione funziona, utilizzare EXIT () all'interno della funzione Gancio. * / Echo "Test_activated ha chiamato!";) Consente di utilizzare un'impostazione WordPress per più siti contemporaneamente allo stesso tempo. Allo stesso tempo, ogni sito riceve le proprie tabelle nel database con un prefisso unico. Tabelle con dati degli utenti registrati comuni a tutti i siti di rete. Questo è un certo vantaggio e registrazione di un giorno è possibile accedere a più siti. Inoltre, su ogni sito, lo stesso account potrebbe avere diritti diversi. Ad esempio, su un sito, l'utente può essere l'editor e su un altro amministratore. In ordinario installazione wordpress. La registrazione, l'autorizzazione e la reimpostazione della password visualizzano il file WP-LOGIN.php. Nella modalità multitei, il kernel di WordPress inizia a comportarsi in qualche modo diversamente e quando si passa al link WP-Login.php? Action \u003d Register riceverà un reindirizzamento su WP-signup.php. Questa è la pagina di registrazione della tua rete, che è predefinita in WordPress. Oltre a registrare gli account utente ordinari, è possibile creare un nuovo sito su di esso se il superministratore ha abilitato un'opportunità di un'opportunità di rete (Impostazioni di rete). Nella maggior parte degli argomenti, la pagina di registrazione non sembra molto buona. Molti temi sono utilizzati dai framework CSS, come Bootstrap e le loro classi specifiche per la stilizzazione di diversi elementi sulle pagine, quindi è difficile scrivere un singolo html che sarà adatto a tutti. Ma non dovresti disperare se la pagina guarda disordinata. Il file wp-signup.php è una grande cosa all'inizio, quando non c'è tempo per elaborare ogni parte del sito - puoi concentrarti su altre pagine e contenuti più importanti. Quando sei pronto per creare la tua pagina di registrazione, WP-signup.php sarà un buon campione e un esempio, che è facile da capire lo spettro delle funzioni che WordPress fornisce l'elaborazione e il controllo dei dati inseriti dagli utenti e crea nuovi account. Per impostazione predefinita, Wordpress apre la pagina di registrazione (WP-signup.php) sulla rete principale del dominio (sito Web). Ciononostante, è possibile creare pagine di registrazione per ciascun sito di rete, anche se hanno argomenti. Considereremo il caso quando un argomento è utilizzato su tutti i siti di rete, ma c'è una pagina di registrazione su ciascuna di esse. I siti differiscono nella lingua (inglese e russo), quindi la pagina di registrazione verrà visualizzata sul sito di lingua "nativo". Se i siti utilizzano argomenti diversi, tutto dipenderà da quali argomenti che si adattano allo stesso layout (una situazione eccellente che può spingerti a unificare tutti i suoi argomenti) o vale la pena elaborare le pagine singolarmente. MU-Plugin può contenere un numero qualsiasi di file e una struttura che sembrerà logica per te. Aderire a una tale gerarchia: | Mu-plugin | | Carico.php |. | Selena-Network | | | Iscriviti |. | | | plugin.php |. | | ... | | | | Jetpack |. | | | plugin.php. Nel file Load.php, le traduzioni e tutti i "plugin" necessari sono collegati: // Caricamento dei trasferimenti per mu-plugin load_muplugin_textdomain ("selena_network", "/ selena-network / lingue /"); // funzionale per la pagina di registrazione Richiedi wpmu_plugin_dir. "/selena-network/signup/plugin.php"; // Un altro plugin // Richiedi wpmu_plugin_dir ... All'interno della directory di Selena-Network, vengono memorizzate le cartelle dei plug-in. Ognuno ha il suo plugin.php, che ci colleghiamo su load.php. Ciò fornisce flessibilità e la capacità di disabilitare immediatamente e includere singoli componenti sul progetto di lavoro in caso di emergenza. Avendo capito con dove e come scriveremo il codice, puoi andare alla creazione della pagina di registrazione. Creare una pagina con un esempio.org/signup/ attraverso l'interfaccia abituale. Come indirizzo, è possibile utilizzare qualsiasi URL che sembrerà adatto al tuo progetto. A Wordpress riconosciuto sul nostro nuova pagina Registrazione e reindirizzamento su di esso, quando si fa clic sul collegamento "Registrato", utilizzare il filtro WP_SignUp_Location. Può essere trovato all'interno del WP-Login.php ed è lui che è responsabile per il reindirizzamento sul WP-signup.php predefinito. Caso "Registrati": if (IS_Multisite ()) (WP_REDIRECT (Apply_Fireders ("WP_Signup_Location", Network_site_url ("WP-signup.php"))); Esci; // ... Come ricordi, per impostazione predefinita, la pagina di registrazione si apre sul dominio principale della rete. Ecco perché network_site_url () è usato qui. Aggiungi il gestore del filtro a MU-Plugin / Selena-Network / Signup / Plugin.php, che verrà fornito all'indirizzo della pagina di registrazione sul sito corrente: Funzione selena_network_signup_page ($ URL);) add_filter ("wp_signup_location", "selena_network_signup_page", 99); selena_network - prefisso, che uso nei nomi di tutte le funzioni all'interno del MU-Plugin sul mio sito per evitare conflitti, deve essere sostituito con il proprio prefisso unico. La priorità di aggiungere il filtro 99, poiché alcuni plugin, come BBPress e Buddypress, possono sovrascrivere questo indirizzo ai propri (MU-Plugin vengono caricati prima dei plugin convenzionali, vedere sopra). Si noti che Home_url () viene utilizzato, che, a differenza di Network_SITE_URL (), fornisce all'indirizzo del sito corrente e non nel sito di rete principale. Il file wp-signup.php contiene un numero elevato di funzioni e codice. Per vedere l'immagine nel suo complesso, puoi usare il codice di piegatura. Di norma, in inglese si chiama "Codice pieghevole". All'inizio del file da 1 a 80, la linea (nella versione 4.1.1), vengono effettuati vari controlli e che emettono la pagina "Start" utilizzando Get_header (). Successivamente, molti metodi sono dichiarati e prima di iniziare a lavorare con loro, vale la pena capire cosa rende ogni funzione. Dentro, molti di questi sono spesso utilizzati altre funzioni con il prefisso WPMU_, tutti sono dichiarati nel file WP-include / MS-Functs.php. Questa sezione è difficile da capire senza vedere il codice da solo. Sotto piccola descrizione Funzioni di base nel caso in cui tu abbia difficoltà. Nella parte inferiore del fondo del file WP-signup.php (da 646 cuciture nella versione 4.1.1), la logica principale della pagina di registrazione, che utilizza i metodi di cui sopra. Questa parte del codice non viene inviata alla funzione. Alla fine, viene chiamato get_footer (). Successivamente, la procedura per copiare un wp-signup.php in mu-plug-in verrà descritto e apportando modifiche alla forcella. Potrebbe non sembrare il modo giusto. Invece, puoi scrivere le funzioni da zero per controllare e ottenere moduli utilizzando lezioni, non funzioni convenzionali. A mio parere, il wp-signup.php ha già tutta la logica necessaria per la nostra pagina, rimane solo per apportare modifiche minori. Quando si aggiorna WordPress, WP-signup.php cambia di volta in volta, ma questo non significa che con ogni versione dovrà sincronizzare il suo "forc". Le funzioni all'interno del wp-signup.php sono essenzialmente impegnate solo solo dall'uscita HTML, dal controllo dei dati, la creazione di account e i siti sono impegnati nel prefisso WPMU_, dichiarato in MS-Functions.php. Creeremo una funzione che mostrerà il modulo di registrazione sulla pagina. Per fare ciò, copia WP-signup.php da Wordpress Root in MU-Plugings / Selena-Network / Iscriviti /. Collegarlo all'interno di Mu-Pugins / Selena-Network / Signup / Plugin.php). Richiedere wpmu_plugin_dir. "/selena-network/signup/wp-signup.php"; Elimina tutti richiedono e controlli non necessari fin dall'inizio del file copiato. Nella versione 4.1.1, questo è l'intero codice da 1 a 80 righe. Ora siamo pronti a creare funzione principale Per visualizzare il modulo di registrazione. Per fare ciò, tutta la logica dalla linea 646 e alla fine del file saremo trasferite alla funzione chiamata selena_network_signup_main. Alla fine, elimini due chiusura non necessarieDai un'occhiata
Risultato
Funzionalità dell'argomento: invasione al territorio dei plugin
Introduzione alla libreria di attivazione del plugin TGM
Impostazione dell'attivazione del plugin TGM
"Mytheme-TGMPa", // Il tuo ID TGMPA unico "default_path" \u003d\u003e get_stylesheet_directory (). "/ lib / plugin /", // Default Absolute Path "Menu" \u003d\u003e "Mytheme-install-obbligatorio-plugin", // menu slug "has_noti" \u003d\u003e true, // Mostra admin Avvisi "licenziamento" \u003d\u003e falso , // Le comunicazioni non sono licenziate "licenziamento_msg" \u003d\u003e "Io davvero, ho davvero bisogno di installare questi plugin, ok?", // Questo messaggio verrà emesso in cima a Nag "IS_AUTOMATIC" \u003d\u003e TRUE, // automaticamente Attiva i plugin dopo l'installazione "Messaggio" \u003d\u003e "", // Messaggio in uscita a destra prima della tabella dei plug-in" stringhe "\u003d\u003e array (); // La matrice di stringhe del messaggio utilizzata da attivazione del plugin TGM);?\u003e Conclusione
Rete principale del sito Web
functs.php?
Digressione lirica
Ordine nei file
Indirizzo della pagina di registrazione
Creando una pagina.
wp-signup.php e wp-activate.php
Inviamo le lettere di attivazione
Conclusione
Bonus. Protezione contro gli spammer.
Come funziona
Termini di utilizzo
Note sull'area delle variabili
ritorna
Usando
register_activation_hook ($ file, $ funzione); $ file. (stringa) (richiesto) La strada per la cosa principale file PHP. Plugin incluso il nome del plugin stesso. Tipicamente usato il php costante magico __file__. $ Funzione. (linea / array / lambda) (richiesto)
Esempi
#uno. Esecuzione di una funzione quando si attiva il plugin
# 2. Avvio di un metodo di classe
# 3. Esegui un metodo di classe da un file separato
#quattro. Esegui una classe di classe dalla classe
# 5 Crea qualsiasi cosa immediatamente dopo l'attivazione del plugin
# 6 Un'altra dimostrazione di usare la funzione
Rete principale del sito Web
Alternativa alle funzioni. PHP.
Ordine nei file
Pagina di registrazione
Reindirizza alla pagina di registrazione desiderata
Funzionalità wp-signup.php
Copia il funzionario wp-signup.php