Zaregistruje funkciu, ktorá sa spustí, keď je doplnok aktivovaný.
Táto funkcia pripája uvedenú funkciu spätného volania k háku activ_ (plugin) a je obalom okolo tohto háčika.
(plugin) v háku activ_ (plugin) je nahradený názvom relatívneho pluginu k hlavnému súboru doplnku. Ak sa napríklad nachádza doplnok: wp-content / plugins / sampleplugin / sample.php, názov háčika bude: activate_sampleplugin / sample.php.
Od verzie 3.1. háčik sa odpaľuje iba počas aktivácie doplnku a nespúšťa sa počas automatická aktualizácia zapojiť.
Ako to funguje
Plugin je aktivovaný funkciou activ_plugin (), v ktorej sa aktivuje háčik activate_ (plugin).
Funkcia activate_plugin () v jadre sa volá po načítaní prostredia VI. Táto funkcia spája hlavný súbor doplnku (a všetko, čo je v ňom uvedené) a potom prostredníctvom háku aktivuje uvedenú funkciu spätného volania. Z tohto dôvodu sú všetky funkcie a triedy doplnku k dispozícii v našej funkcii spätného volania. Pretože však všetky hlavné háčiky WP už fungovali počas načítania prostredia VI, nebudú po pripojení hlavného súboru doplnku už spustené žiadne udalosti doplnkov zavesené na hákoch, napríklad plugins_loaded. To znamená, že náš doplnok bude pripojený, ale nie úplne: nie tak, ako by mal byť pripojený, keď je už aktivovaný.
Ak napríklad doplnok urobí niečo počas udalosti plugins_loaded, všetky tieto akcie sa jednoducho nestanú, keď je doplnok aktivovaný. Ak napríklad pripojí prekladový súbor, potom sa prekladový súbor nepripojí v okamihu, keď sa spustí funkcia spätného volania špecifikovaná pre register_activation_hook ().
Po spustení funkcie spätného volania spravidla dôjde k 2 udalostiam, na ktoré môžete zavesiť funkcie: activated_plugin a vypnutie.
Ak chcete pri aktivácii doplnku urobiť niečo výnimočné, pozrite si príklad 5.
Podmienky používania
Táto funkcia nebude fungovať, ak ju zavoláte v momente, keď sa spustí háčik, napríklad plugins_loaded, init. Funkciu je potrebné vyvolať priamo z hlavného súboru doplnku. Aktivačné pravidlá:
- Globálne premenné (ak existujú) musia byť definované explicitne, aby boli prístupné z funkcie hook.
register_activation_hook () by sa malo volať z hlavného súboru doplnku, kde sa nachádza smernica Plugin Name: ..., a nemalo by sa volať zo žiadneho háčika, ako napríklad plugins_loaded alebo init.
Funkcia hook musí byť v rovnakom súbore ako hook alebo musí byť zahrnutá vopred z iného súboru.
Vo funkcii hook nefunguje ozvena. Pretože existuje presmerovanie a neuvidíte ozvenu. Ale die () sa dá použiť.
Poznámka k variabilnému rozsahu pôsobnosti
Keď je doplnok aktivovaný, hlavný súbor doplnku nie je zahrnutý v globálnom rozsahu, ale vo funkcii activate_plugin (). Preto sú premenné, ktoré sú v normálny režim práce s doplnkami sú považované za globálne, nebudú globálne.
Napríklad funkcia, ktorá sa používa v register_activation_hook (), nemusí vidieť globálne premenné, aj keď ste ich v tejto funkcii deklarovali ako globálne. Príklad:
$ myvar = "niečo"; register_activation_hook (__ FILE__, "myplugin_activate"); funkcia myplugin_activate () (global $ myvar; echo $ myvar; // Premenná sa nerovná „niečomu“)
Z dôvodu tejto funkcie musia byť globálne premenné vždy špecifikované explicitne. Všetky globálne premenné musia byť definované ako globálne, aj keď je premenná uvedená v tele doplnku. Iba v tomto prípade k nim bude prístup kdekoľvek. Príklad:
Globálny $ myvar; // výslovne uvádzame, že ide o globálnu premennú $ myvar = "niečo"; register_activation_hook (__ FILE__, "myplugin_activate"); funkcia myplugin_activate () (global $ myvar; echo $ myvar; //> niečo)
Neexistujú žiadne háčiky.
Vráti sa
nulový. Nič nevracia.
Použitie
register_activation_hook ($ súbor, $ funkcia); $ súbor (reťazec) (povinné) Cesta k hlavnému súboru php doplnku vrátane názvu samotného doplnku. Obvykle sa používa magická konštanta PHP __FILE__. $ funkcia (reťazec / pole / lambda) (povinné)Názov funkcie spätného volania. Pre triedy použite pole: pole ($ this, "názov_funkcie"); ...
Funkcia dostane booleovskú premennú $ network_wide - či je doplnok pri viacerých lokalitách aktivovaný pre celú sieť stránok.
Príklady
#1. Spustenie funkcie pri aktivácii doplnku
Predpokladajme, že v hlavnom súbore doplnku máme funkciu my_plugin_activate (): wp-content / plugins / myplugin / myplugin.php, potom na spustenie tejto funkcie počas aktivácie doplnku použite nasledujúci kód:
Register_activation_hook (__ FILE__, "my_plugin_activate"); function my_plugin_activate () (// Aktivačný kód ...)
# 2. Spustenie triednej metódy
Ak doplnok používa Trieda PHP, aktivačný kód sa pridá takto:
Register_activation_hook (__ FILE__, pole („My_Plugin“, „install“)); class My_Plugin (static function install () (// Nevytvárajte tu žiadny výstup ...))
# 3. Spustenie metódy triedy zo samostatného súboru
Ak je trieda, ktorá obsahuje aktivačnú funkciu, v samostatný súbor, potom zaregistrujte aktivačnú funkciu takto:
Include_once __DIR__. "/class-My_Plugin.php"; register_activation_hook (__ FILE__, pole ("My_Plugin", "on_activate_function"));
#4. Spustenie metódy triedy zo samotnej triedy
Ak sa nachádzate vo vnútri __construct (). Dôležité je, že __FILE__ sa musí „pozrieť“ na hlavný súbor doplnku:
Register_activation_hook (__ FILE__, pole ($ this, „YOUR_METHOD_NAME“));
# 5 Urobte niečo hneď po aktivácii doplnku
Po aktivácii doplnku sa spustia iba dva háčiky: activated_plugin a vypnutie.
Keď potrebujete niečo urobiť ihneď po aktivácii doplnku, môžete k nim pripojiť funkciu.
Ak takéto riešenie nefunguje, môžete použiť možnosti WP: uložiť údaje do možnosti a potom ju vyhľadať a podľa možnosti niečo urobiť:
// Hlavný súbor doplnku. ... funkcia my_plugin_activate () (// pridajte voľbu, aby neskôr, ak existuje človek, ktorý by mal niečo urobiť. add_option ("Activated_Plugin", "Plugin-Slug"); // Tu je aktivačný kód ...) register_activation_hook ( __ FILE__, "my_plugin_activate"); funkcia load_plugin () (if (is_admin () && get_option ("Activated_Plugin") == "Plugin-Slug") (// odstráňte pridanú možnosť, aby už nefungovala // a robte, čo potrebujeme ... delete_option ( "Actived_Plugin"); // Urobte niečo raz, po aktivácii pluginu // Napríklad: add_action ("init", "my_init_function");)) add_action ("admin_init", "load_plugin");
Ďalšou možnosťou, ako urobiť niečo počas aktivácie doplnku, je vytvoriť udalosť takto:
Funkcia my_plugin_activate () (// Nainštalujte si vlastný háčik, aby ste sa k nemu mohli pripojiť zo súborov samotného pluginu do_action („my_plugin_activate“);) register_activation_hook (__ FILE__, „my_plugin_activate“);
# 6 Ďalšia ukážka používania funkcie
Malý doplnok, ktorý ukazuje, ako používať túto funkciu:
/ * Plugin Name: A Test Description: A Test * / require_once dirname (__ FILE__). "/my_other_file.php"; / * Tento kód nebude fungovať. Aktivačný hák musí byť vyvolaný z hlavného súboru. register_activation_hook (dirname (__ FILE__). "/my_other_file.php", "my_other_function"); * / // Toto je pracovný kód. register_activation_hook (__ FILE__, "test_activated"); / * Toto je správny spôsob deklarovania globálnych premenných a prístupu k nim. Globálne premenné musia byť jasne deklarované. Bez toho k nim nebudete mať prístup. * / global $ some_var; $ some_var = "ahoj"; // Funkcia aktivačnej funkcie test_activated () (// tu $ some_var sa nebude rovnať hej globálnej $ some_var; // A tu $ some_var sa bude rovnať hej // Táto funkcia je definovaná v súbore "my_other_file.php" my_other_function (); / * Toto nebude fungovať. Ak potrebujete zapisovať protokoly do dočasného súboru, použite príkaz fopen / fwrite. Ak chcete otestovať, či aktivačný háčik funguje, použite funkciu exit () vo vnútri funkcie hook. * / echo „test_actived called!“;)
Vytvárame vlastnú registračnú stránku pre multisite namiesto štandardného wp-signup.php.
V. normálna inštalácia Stránka WordPress registrácia (autorizácia, reset hesla) vydá súbor wp-login.php.
- /wp-login.php - autorizácia
- /wp-login.php?action=register - registrácia
- /wp-login.php?action=lostpassword - obnovenie hesla
Na serveri wp-login.php existujú samostatné podmienky pre viacnásobné umiestnenie. Keď teda kliknete na odkaz /wp-login.php?action=register na viacstránke, WordPress vás presmeruje na stránku /wp-signup.php. V mnohých témach stránka nevyzerá veľmi atraktívne, takže si vytvoríme vlastnú.
Hlavná stránka siete
V predvolenom nastavení WordPress otvára registračnú stránku (wp-signup.php) v hlavnej doméne (webe) siete. Je však možné vytvoriť samostatnú registračnú stránku pre každú stránku v sieti, aj keď majú rôzne témy. Zoberieme do úvahy prípad, keď všetky weby v sieti majú vlastnú registračnú stránku, ale používa sa rovnaká téma a weby sa líšia iba jazykom. Ak sa používajú rôzne témy, bude potrebné napísať viac kódu.
functions.php?
Nie Zdá sa, že názov tohto súboru je uvedený v každom článku WordPress. V našom prípade, vzhľadom na to, že registračná funkcia je navrhnutá pre niekoľko stránok, má zmysel presunúť ju do doplnkov MU, ktoré sa načítajú pri otvorení akejkoľvek stránky.
Lyrická odbočka
Stojí za zmienku, že doplnky MU sa načítavajú skôr ako bežné doplnky a pred úplným načítaním jadra WordPress, takže volanie niektorých funkcií môže viesť k fatálnym chybám v PHP. Toto „rané“ načítanie má tiež svoje výhody. Napríklad v rámci akejkoľvek témy nemôžete lipnúť na niektorých akciách, ktoré sú spustené ešte pred načítaním súboru functions.php z témy. Príkladom toho sú akcie z pluginu Jetpack v tvare jetpack_module_loaded_related-posts (related-posts-názov modulu), pomocou ktorých je možné sledovať aktivitu modulov v Jetpack. K tejto akcii nie je možné „priľnúť“ zo súboru tém, pretože akcia už bola spustená pred načítaním témy - pred témami sa načítajú doplnky. Môžete sa pozrieť na všeobecný obraz o poradí načítania WordPress na stránke Action Reference v kódexe.
Poradie súborov
Doplnky MU môžu obsahovať ľubovoľný počet súborov a akúkoľvek štruktúru, ktorá sa vám zdá logická. Držím sa niečoho ako táto hierarchia:
| -mu -pluginy | - | -load.php | - | - | -selena -network | - | - | - | -prihlasovanie | - | - | - | - | -plugin.php | - | - | - | - | -... | - | - | - | -jetpack | - | - | - | - | -plugin.php
Všetky potrebné „doplnky“ pre našu sieť sú pripojené k súboru load.php:
// Načítanie traslatov pre všetky doplnky load_muplugin_textdomain ("selena_network", "/ selena-network/ languages/"); // Sieťová registrácia vyžaduje WPMU_PLUGIN_DIR. "/selena-network/signup/plugin.php"; // Ďalšie doplnky // vyžadujú WPMU_PLUGIN_DIR ...
Vo vnútri priečinka selena-network sú uložené priečinky doplnkov, z ktorých každý má svoj vlastný plugin.php, ktorý zahrnujeme do súboru load.php. To vám dáva flexibilitu a schopnosť rýchlo veci vypnúť a zapnúť.
Adresa registračnej stránky
Na zadanie adresy registračnej stránky sa používa filter wp_signup_location. Nachádza sa v súbore wp-login.php a je zodpovedný za presmerovanie na wp-signup.php.
Prípad "register": if (is_multisite ()) (wp_redirect (apply_filters ("wp_signup_location", network_site_url ("wp-signup.php")))); exit;
Pridajte svoju funkciu do mu-plugins / selena-network / signup / plugin.php, čím sa vráti adresa registračnej stránky na aktuálnom webe:
Funkcia selena_network_signup_page ($ url) (návrat home_url (). " / Signup /";) add_filter ("wp_signup_location", "selena_network_signup_page", 99);
selena_network je predpona, ktorú používam v názvoch všetkých funkcií v doplnkoch MU na svojom webe, aby som predišiel kolíziám, mala by byť nahradená mojou vlastnou jedinečnou predponou. Filter má prioritu 99, pretože niektoré doplnky ako bbPress a BuddyPress môžu túto adresu URL prepísať vlastnou (doplnky MU sa načítajú skôr ako bežné doplnky, pozri vyššie). Všimnite si toho, že home_url () sa používa namiesto network_site_url () na udržanie návštevníka na tej istej doméne. Ako adresu je možné použiť ľubovoľnú adresu URL.
Vytvorte stránku
Teraz vytvoríme stránku s adresou site.com/signup/ prostredníctvom pravidelného rozhrania a v priečinku s podradenou témou je šablónou pre našu novú stránku page-signup.php. Namiesto slova „registrácia“ je možné použiť jedinečný identifikátor.
Vo vnútri novej šablóny musíte zavolať funkciu selena_network_signup_main (), ktorá zobrazí registračný formulár.
Stojí za zmienku, že celý proces so šablónami nie je potrebný a namiesto toho si môžete vytvoriť svoj vlastný krátky kód, ktorý bude volať aj funkciu selena_network_signup_main ().
wp-signup.php a wp-activate.php
Teraz začneme vytvárať funkciu, ktorá zobrazí registračný formulár. Za týmto účelom skopírujte súbory wp-signup.php a wp-activ.php z koreňa WordPress do mu-plugings / selena-network / signup / (a nezabudnite ich pripojiť do mu-plugins / selena-network / signup / plugin.php) ... Ďalšie manipulácie so súbormi sú extrémne náročné a časovo náročné na opis, takže ich budete musieť urobiť sami. Popíšem iba, čo presne je potrebné urobiť a zverejním zdrojové súbory svojho projektu:
- Na začiatku súboru odstráňte všetky funkcie require, volania funkcií a ďalší kód mimo funkcií.
- Premenujte všetky funkcie pridaním jedinečných predpon k menám.
- Spodnú časť kódu wp-signup.php zabaľte do funkcie selena_network_signup_main a na začiatku napíšte globálne $ active_signup; ...
- Vymeňte rozloženie za svoje na správnych miestach.
Vo wp-activ.php musíte urobiť približne to isté:
- Odstráňte všetok kód mimo funkcií, zabaľte rozloženie do samostatnej funkcie.
- V prípade potreby zmeňte rozloženie.
Súbor wp-activate.php je zodpovedný za stránku aktivácie účtu. Rovnako ako pre registračnú stránku, musíte pre ňu vytvoriť samostatnú šablónu, v ktorej zavoláte funkciu zo súboru wp-activate.php.
Posielame aktivačné listy
Registračná stránka pošle návštevníkovi e -mail s odkazom na aktiváciu jeho účtu. Štandardne to robí funkcia wpmu_signup_user_notification () zo súboru ms-functions.php. Jeho funkčnosť si môžete pre svoju funkciu požičať. Dôvodom, prečo prestať používať túto funkciu, je to, že odosiela odkaz na aktiváciu účtu z wp-activate.php. Túto funkciu môžete "deaktivovať" pomocou filtra wpmu_signup_user_notification, pričom na ňom uvediete nepravdu (ak to neurobíte, aktivačný list bude odoslaný dvakrát, v skutočnosti však dve rôzne písmena).
Funkcia armyofselenagomez_wpmu_signup_user_notification ($ user, $ user_email, $ key, $ meta = array ()) (// ... // Kód z funkcie wpmu_signup_user_notification () wp_mail ($ user_email, wp_specialchars_decode ($ message_headers), $ správa), $; return false;) add_filter ("wpmu_signup_user_notification", "armyofselenagomez_wpmu_signup_user_notification", 10, 4);
Výsledkom je, že registračná stránka v téme Selena vyzerá oveľa čistejšie a presnejšie.
Záver
Existuje mnoho ďalších, nie príliš správnych spôsobov, ako urobiť to isté na internete - presmerovania Apache, formuláre AJAX, ktoré nebudú fungovať bez Java Scriptu atď. Toto všetko sa mi nepáčilo, takže som sa pokúsil urobiť to na svojom počítači čo najpresnejšie vlastný web.
Súbory by ste mali upravovať opatrne a snažiť sa veľmi neodchyľovať od originálu, aby v budúcnosti, ak WordPress zmení súbory wp-signup.php a wp-activate.php, bolo jednoduchšie ich porovnať a nájsť. zmeny.
Nezabudnite sa pozrieť zdroj všetky funkcie popísané vyššie, aby ste úplne pochopili, čo a ako sa deje v kóde.
Bonus. Ochrana proti spammeru
Aj tie najmenšie stránky WordPress podliehajú častej registrácii nevyžiadanej pošty. Môžete písať nekonečné podmienky na filtrovanie robotov, často skôr ako pokúšať sa vytvoriť umela inteligencia🙂 V prípade multisite mi dosť pomohlo obvyklé presmerovanie v Apache, s ktorým som pri otváraní /wp-signup.php a /wp-acitvate.php požiadal o 404 (nie som odborník na konfigurácia Apache takže moje pravidlá nemusia byť veľmi správne).
RewriteEngine na serveri RewriteBase / RewriteRule ^ wp -signup \ .php - RewriteRule ^ wp -activate \ .php - # ZAČAŤ WordPress # Štandardne sa nedotýkajte pravidiel WordPress :) # ... # END WordPress
P. S. Snažím sa čo najpodrobnejšie popísať niektoré veci tretích strán, pretože keď som začínal, niekedy nebol nikto, kto by mnohé veci vyzýval a vysvetlil. Tiež verím, že také malé tipy na ďalšie materiály prinútia niekoho naučiť sa niečo nové a rozšíria svoju oblasť znalostí. V položkách RewriteRule sa používajú regulárne výrazy, ktoré nie sú vôbec zložité, napríklad znak ^ znamená začiatok riadka.
Umožňuje vám použiť jednu inštaláciu WordPress pre viacero webov súčasne. Každý web zároveň dostane do databázy svoje vlastné tabuľky s jedinečnou predponou.
Tabuľky s údajmi registrovaných používateľov sú spoločné pre všetky weby v sieti. Toto je jednoznačné plus a registráciou získate prístup na niekoľko stránok. Na každom webe môže mať ten istý účet odlišné práva. Na jednom webe môže byť napríklad používateľ editorom a na druhom správcom.
Pri typickej inštalácii WordPress vygeneruje stránka registrácie, prihlásenia a resetovania hesla súbor wp-login.php.
- wp -login.php - autorizácia
- wp -login.php? action = register - registrácia
- wp -login.php? action = lostpassword - reset hesla
V režime viacerých stránok sa jadro WordPress začne správať trochu inak a keď kliknete na odkaz wp-login.php? Action = register, dôjde k presmerovaniu na wp-signup.php. Toto je stránka registrácie pre vašu sieť, ktorú má WordPress v predvolenom nastavení.
Okrem registrácie bežných používateľských účtov na nich môžete vytvoriť aj novú webovú stránku, ak super administrátor povolil túto funkciu v nastaveniach siete (Network Admin → Settings → Network Settings).
Registračná stránka vo väčšine tém nevyzerá veľmi dobre. Mnoho vzhľadov používa CSS rámce ako Bootstrap a ich vlastné špecifické triedy na štylizáciu rôznych prvkov na stránkach, takže je ťažké napísať jeden HTML, ktorý funguje pre každého.
Nezúfajte však, ak stránka vyzerá neupravene. Súbor wp -signup.php je spočiatku skvelá vec, keď nie je čas zaoberať sa každým detailom stránky - môžete sa viac zamerať na ostatných dôležité stránky a obsahu.
Keď ste pripravení vytvoriť si vlastnú registračnú stránku, wp-signup.php bude dobrou ukážkou a príkladom, ktorý vám pomôže porozumieť rozsahu funkcií, ktoré WordPress poskytuje na spracovanie a overovanie vstupu používateľov a vytváranie nových účtov.
Hlavná stránka siete
V predvolenom nastavení WordPress otvára registračnú stránku (wp-signup.php) v hlavnej doméne (webe) siete. Registračné stránky však môžete vytvoriť pre každý web v sieti, aj keď majú tému.
Zvážime prípad, keď všetky weby v sieti používajú rovnakú tému, ale každá z nich má registračnú stránku. Stránky sa líšia jazykom (angličtina a ruština), takže registračná stránka sa zobrazí v „rodnom“ jazyku stránok. Ak weby používajú rôzne témy, všetko bude závisieť od toho, o aké témy ide, či im vyhovuje rovnaké rozloženie (vynikajúca situácia, ktorá vás môže prinútiť zjednotiť všetky vaše témy) alebo či sa oplatí vypracovať stránky jednotlivo.
Alternatíva k functions.php
Poradie súborov
Doplnky MU môžu obsahovať ľubovoľný počet súborov a štruktúru, ktorá sa vám zdá logická. Držím sa niečoho ako táto hierarchia:
| mu-pluginy | | load.php | | selena-network | | | registrácia | | | | plugin.php | | | ... | | | jetpack | | | | plugin.php
Súbor load.php obsahuje preklady a všetky potrebné „doplnky“:
// Načítanie prekladov pre doplnky MU load_muplugin_textdomain ("selena_network", "/ selena-network/ languages/"); // Funkčné pre registračnú stránku vyžadujú WPMU_PLUGIN_DIR. "/selena-network/signup/plugin.php"; // Ďalší doplnok // vyžaduje WPMU_PLUGIN_DIR ...
Vnútri adresára selena-network sú priečinky doplnkov. Každý má svoj vlastný plugin.php, ktorý zahrnujeme do súboru load.php. To dáva flexibilitu a schopnosť v prípade núdze okamžite deaktivovať a povoliť jednotlivé komponenty vo fungujúcom projekte.
Registračná stránka
Keď sme zistili, kde a ako napíšeme kód, môžeme pristúpiť k vytvoreniu registračnej stránky.
Vytvorme stránku s adresou example.org/signup/ prostredníctvom pravidelného rozhrania. Ako adresu môžete použiť ľubovoľnú adresu URL, ktorá sa zdá byť vhodná pre váš projekt.
Presmerujte na požadovanú registračnú stránku
Ak chcete, aby WordPress vedel o našich nová stránka registrácia a urobili naň presmerovanie, keď kliknete na odkaz „Registrovať“, použije sa filter wp_signup_location. Nachádza sa na adrese wp-login.php a je predvolene zodpovedný za presmerovanie na wp-signup.php.
Prípad „register“: if (is_multisite ()) (wp_redirect (apply_filters („wp_signup_location“, network_site_url („wp-signup.php“)))); exit; // ...
Ako si pamätáte, v predvolenom nastavení sa registračná stránka otvára v hlavnej doméne siete. Preto sa tu používa network_site_url ().
Pridajte nášho obslužného programu do filtra v mu-plugins / selena-network / signup / plugin.php, ktorý vráti adresu registračnej stránky na aktuálnom webe:
Funkcia selena_network_signup_page ($ url) (return home_url ("signup");) add_filter ("wp_signup_location", "selena_network_signup_page", 99);
selena_network je predpona, ktorú používam v názvoch všetkých funkcií v rámci doplnkov MU na svojom webe, aby sa zabránilo kolíziám, mala by byť nahradená mojou vlastnou jedinečnou predponou. Filter má prioritu 99, pretože niektoré doplnky ako bbPress a BuddyPress môžu túto adresu URL prepísať vlastnou (doplnky MU sa načítajú skôr ako bežné doplnky, pozri vyššie).
Všimnite si toho, že sa používa home_url (), ktorý na rozdiel od network_site_url () vracia adresu aktuálneho webu, nie hlavného webu v sieti.
Funkčnosť wp-signup.php
Súbor wp-signup.php obsahuje množstvo funkcií a kódu. Ak chcete vidieť celkový obraz, môžete použiť skladanie kódu. V angličtine sa to zvyčajne nazýva „skladanie kódu“.
Na úplnom začiatku súboru od 1 do 80 riadkov (vo verzii 4.1.1) sa pomocou get_header () vykonávajú rôzne kontroly a výstup „začiatku“ stránky.
Ďalej je deklarovaných mnoho metód a než s nimi začneme pracovať, stojí za to pochopiť, čo ktorá funkcia robí. Mnoho z nich často používa iné funkcie s predponou wpmu_, ktoré sú všetky deklarované v súbore wp-includes / ms-functions.php. Táto časť je ťažko zrozumiteľná bez toho, aby ste kód videli sami. Nasleduje krátky popis hlavných funkcií v prípade, že máte problémy.
- wpmu_signup_stylesheet () - Vytvorí ďalšie CSS na registračnej stránke.
- show_blog_form () - polia pre registráciu stránok (adresa, názov, viditeľnosť pre vyhľadávače).
- validate_blog_form () - overte zadanú adresu stránky a názov pomocou wpmu_validate_blog_signup ().
- show_user_form () - polia pre registráciu užívateľa (prihlasovacia a e -mailová adresa).
- validate_user_form () - overenie zadaného používateľského mena a e -mailovej adresy. pošta pomocou wpmu_validate_user_signup ().
- signup_another_blog () - polia pre registráciu nových stránok pomocou show_blog_form () pre užívateľov, ktorí sú už na webe zaregistrovaní.
- validate_another_blog_signup () - overí URL a názov stránky pomocou validate_blog_form ().
- signup_user () je hlavná funkcia na zobrazenie polí registračnej stránky.
- validate_user_signup () - overuje používateľské meno a e -mailovú adresu. pošta pomocou validate_user_form ().
- signup_blog () - polia na zadanie adresy, názvu a viditeľnosti stránok (druhý krok registrácie) pomocou show_blog_form ().
- validate_blog_signup () - overuje prihlásenie, e -mail. e -mail, adresa a názov stránky.
V spodnej časti súboru wp-signup.php (z riadku 646 vo verzii 4.1.1) je hlavná logika registračnej stránky, ktorá používa všetky vyššie popísané metódy. Táto časť kódu nie je presunutá do funkcie. Na konci sa nazýva get_footer ().
Skopírujte funkčnosť súboru wp-signup.php
Ďalej opíšeme postup skopírovania wp-signup.php do doplnkov MU a vykonania zmien v „vidlici“. Možno sa to nezdá ako správna cesta. Namiesto toho môžete písať svoje vlastné overovanie formulárov a zobrazovať funkcie od začiatku pomocou tried, a nie bežných funkcií. Podľa mňa wp-signup.php už má pre našu stránku všetku potrebnú logiku, zostáva len vykonať malé zmeny.
Keď aktualizujete WordPress, wp-signup.php sa z času na čas zmení, neznamená to však, že s každým vydaním budete musieť svoju vidlicu synchronizovať. Funkcie vo vnútri wp-signup.php sa v zásade zaoberajú iba výstupom HTML, validáciou údajov, vytváraním účtov a stránok, metódami s predponou wpmu_ deklarovanou v ms-functions.php.
Začneme vytvárať funkciu, ktorá na stránke zobrazí registračný formulár. Za týmto účelom skopírujte súbor wp-signup.php z koreňa WordPress do súboru mu-plugings / selena-network / signup /. Pripojme ho vnútri mu-plugins / selena-network / signup / plugin.php).
Vyžadovať WPMU_PLUGIN_DIR. "/selena-network/signup/wp-signup.php";
Odstráňte všetky požadované a nepotrebné kontroly od úplného začiatku kopírovaného súboru. Vo verzii 4.1.1 je to všetok kód od 1 do 80 riadkov.
Teraz sme pripravení vytvoriť hlavnú funkciu na zobrazenie registračného formulára. Za týmto účelom presuňte všetku logiku z riadka 646 na úplný koniec súboru do funkcie s názvom selena_network_signup_main. Na samom konci odstránime dve dodatočné uzávery