Lehetővé teszi egy WordPress-telepítés használatát több webhelyhez egyidejűleg. Ebben az esetben minden webhely saját táblákat kap az adatbázisban egyedi előtaggal.
A regisztrált felhasználók adatait tartalmazó táblázatok a hálózat összes webhelyén közösek. Ez határozott plusz, és egyszeri regisztrációval több oldalhoz is hozzáférhet. Ezenkívül minden webhelyen ugyanaz a fiók különböző jogosultságokkal rendelkezhet. Például az egyik oldalon a felhasználó lehet szerkesztő, a másikon pedig rendszergazda.
A WordPress tipikus telepítése során a wp-login.php fájl a regisztrációs, bejelentkezési és jelszó-visszaállítási oldalt jeleníti meg.
Több webhely módban a WordPress magja kissé eltérően kezd viselkedni, és ha követi a wp-login.php?action=register hivatkozást, átirányítás történik a wp-signup.php webhelyre. Ez az Ön hálózati regisztrációs oldala, amely alapértelmezés szerint a WordPresshez tartozik.
A normál felhasználói fiókok regisztrációja mellett új webhelyet is létrehozhat rajta, ha a kiemelt rendszergazda engedélyezte ezt a funkciót a hálózati beállításokban (Hálózati adminisztráció → Beállítások → Hálózati beállítások).
A legtöbb témában a regisztrációs oldal nem néz ki túl jól. Sok téma CSS-keretrendszereket, például a Bootstrap-et és saját egyéni osztályait használja az oldalak különböző elemeinek stílusához, így nehéz egyetlen HTML-kódot írni, amely mindenkinek megfelel.
De ne essen kétségbe, ha az oldal rendezetlennek tűnik. A wp-signup.php fájl elsőre nagyszerű dolog, amikor nincs ideje az oldal minden részletét végigdolgozni – más fontosabb oldalakra és tartalmakra koncentrálhat.
Ha készen áll a saját regisztrációs oldal létrehozására, a wp-signup.php egy jó sablon és példa arra, hogy könnyen megértse a WordPress által a felhasználói bemenetek feldolgozásához és ellenőrzéséhez, valamint új fiókok létrehozásához nyújtott funkciókat.
Alapértelmezés szerint a WordPress megnyitja a regisztrációs oldalt (wp-signup.php) a hálózat fő domainjén (webhelyén). Azonban létrehozhat regisztrációs oldalakat a hálózat minden egyes webhelyéhez, még akkor is, ha vannak témái.
Megvizsgáljuk azt az esetet, amikor a hálózat összes webhelye ugyanazt a témát használja, de mindegyik rendelkezik regisztrációs oldallal. Az oldalak nyelve eltérő (angol és orosz), így a regisztrációs oldal az oldal „anyanyelvén” jelenik meg. Ha az oldalak különböző témákat használnak, akkor minden azon múlik, hogy pontosan melyek ezek a témák, vajon ugyanaz az elrendezés illik-e hozzájuk (kiváló helyzet, ami arra késztet, hogy az összes témát egységesítse), vagy érdemes-e az oldalakon külön-külön dolgozni.
Az MU beépülő modulok tetszőleges számú fájlt és logikusnak tűnő struktúrát tartalmazhatnak. Valami ehhez hasonló hierarchiához ragaszkodom:
| mu-plugins | | load.php | | selena-network | | | regisztráció | | | | plugin.php | | | ... | | | jetpack | | | | plugin.php
A load.php fájl tartalmazza a fordításokat és az összes szükséges „plugint”:
// Fordítások betöltése MU-bővítményekhez load_muplugin_textdomain("selena_network", "/selena-network/languages/"); // A regisztrációs oldal működéséhez WPMU_PLUGIN_DIR szükséges. "/selena-network/signup/plugin.php"; // Egy másik bővítmény // WPMU_PLUGIN_DIR szükséges ...
A beépülő modulok mappái a selena-network könyvtárban vannak tárolva. Mindegyiknek megvan a saját plugin.php-je, amit a load.php-be is belefoglalunk. Ez rugalmasságot és lehetőséget biztosít a munkaprojekt egyes összetevőinek azonnali ki- és bekapcsolására vészhelyzet esetén.
Miután kitaláltuk, hol és hogyan írjuk meg a kódot, továbbléphetünk a regisztrációs oldal létrehozásához.
Hozzunk létre egy oldalt example.org/signup/ címmel a normál felületen keresztül. Bármilyen URL-t használhat, amely megfelelőnek tűnik a projektje számára.
Annak érdekében, hogy a WordPress megismerje új regisztrációs oldalunkat, és pontosan oda irányítson, a „Regisztráció” linkre kattintva a wp_signup_location szűrőt használjuk. A wp-login.php fájlban található, és alapértelmezés szerint felelős a wp-signup.php webhelyre történő átirányításért.
Case "register" : if (is_multisite()) ( wp_redirect(apply_filters("wp_signup_location", network_site_url("wp-signup.php"))); kilépés; // ...
Mint emlékszik, alapértelmezés szerint a regisztrációs oldal a hálózat fő tartományában nyílik meg. Ezért van itt a network_site_url() használatos.
Adjuk hozzá a kezelőnket a mu-plugins/selena-network/signup/plugin.php szűrőhöz, amely visszaadja a regisztrációs oldal címét az aktuális oldalon:
Függvény selena_network_signup_page($url) ( return home_url("regisztráció"); ) add_filter("wp_signup_location", "selena_network_signup_page", 99);
A selena_network az az előtag, amelyet a webhelyemen lévő MU-bővítményeken belüli összes függvény nevében használok az ütközések elkerülése érdekében. Ezt a saját egyedi előtagjával kell helyettesíteni. A szűrő hozzáadásának prioritása 99, mivel egyes pluginok, például a bbPress és a BuddyPress felülírhatják ezt a címet a sajátjaikkal (az MU bővítmények korábban töltődnek be, mint a hagyományos pluginek, lásd fent).
Kérjük, vegye figyelembe, hogy a home_url() függvényt használja, amely a network_site_url(-től eltérően) az aktuális webhely címét adja vissza, nem pedig a hálózat fő webhelyét.
A wp-signup.php fájl nagyszámú függvényt és kódot tartalmaz. A teljes kép megtekintéséhez használhatja a kódhajtogatást. Általános szabály, hogy angolul ezt „kódhajtogatásnak” hívják.
A fájl legelején, 1-től 80-ig (a 4.1.1-es verzióban) különféle ellenőrzéseket hajtanak végre, és az oldal „kezdetét” a get_header() segítségével adja ki.
Ezután számos módszert deklarálnak, és mielőtt elkezdenénk velük dolgozni, érdemes megérteni, hogy az egyes függvények mit csinálnak. Sokan gyakran használnak más függvényeket a wpmu_ előtaggal, amelyek mindegyike a wp-includes/ms-functions.php fájlban van deklarálva. Ezt a részt nehéz megérteni anélkül, hogy maga látná a kódot. Az alábbiakban a fő funkciók rövid leírása található, ha nehézségei adódnának.
A wp-signup.php fájl legalján (a 4.1.1-es verzió 646-os sorától) található a regisztrációs oldal fő logikája, amely az összes fent leírt módszert használja. A kódnak ez a része nem szerepel a függvényben. A végén a get_footer() meghívásra kerül.
Az alábbiakban leírjuk a wp-signup.php MU-bővítményekbe másolásának és a „fork” módosításának az eljárását. Lehet, hogy ez nem a legjobb út. Ehelyett saját függvényeket írhat a semmiből, hogy érvényesítse és megjelenítse az űrlapokat osztályok használatával, nem pedig normál függvényekkel. Véleményem szerint a wp-signup.php már minden szükséges logikával rendelkezik oldalunkhoz, már csak néhány apró változtatás van hátra.
A WordPress frissítésekor a wp-signup.php is időről időre változik, de ez nem jelenti azt, hogy minden kiadással szinkronizálnod kell a „villát”. A wp-signup.php-n belüli függvények lényegében csak a HTML-kimenettel, adatellenőrzéssel, fiókok és webhelyek létrehozásával foglalkoznak, valamint az ms-functions.php-ben deklarált wpmu_ előtagú metódusok.
Hozzon létre egy függvényt, amely megjeleníti a regisztrációs űrlapot az oldalon. Ehhez másolja a wp-signup.php fájlt a WordPress gyökérkönyvtárából a mu-plugings/selena-network/signup/ mappába. Csatlakoztassuk a mu-plugins/selena-network/signup/plugin.php-n belül.
WPMU_PLUGIN_DIR szükséges. "/selena-network/signup/wp-signup.php";
Távolítsunk el minden szükséges és szükségtelen ellenőrzést a másolt fájl legelejétől. A 4.1.1-es verzióban ez az összes kód az 1-től a 80-as sorig.
Most készen állunk a fő funkció létrehozására a regisztrációs űrlap megjelenítéséhez. Ehhez az összes logikát a 646-os sortól a fájl legvégéig átvisszük a selena_network_signup_main nevű függvénybe. A legvégén eltávolítunk két extra zárást
Az újonnan létrehozott selena_network_signup_main()-ben a legelején deklaráljuk a globális active_signup változót, amelyet az összes többi metódus használ ebből a fájlból. És adjunk hozzá egy hívást a before_signup_form eseményhez, amelyet a fájl legelejétől távolítottunk el.
Függvény selena_network_signup_main() ( globális $active_signup; do_action("before_signup_form"); // ... )
Most már csak az elrendezést kell megváltoztatni minden olyan helyen, ahol szükséges, és a regisztrációs oldal készen áll.
Itt legalább két lehetőség van. Kényelmesebb módja egy rövid kód létrehozása és az oldalra való elhelyezése egy normál szerkesztőn keresztül.
// Hozzon létre egy rövid kódot network_signup add_shortcode("network_signup", "selena_network_signup_main");
A második lehetőség a page-signup.php oldalsablon létrehozása a gyermektéma mappájában. A "regisztráció" szó helyett használhatja az oldalhoz rendelt egyedi azonosítót. A sablonon belül adja hozzá a szükséges elrendezést, és hívja meg a selena_network_signup_main() parancsot a megfelelő helyen.
Ennek eredményeként a regisztrációs oldalam sokkal jobban és tisztábbnak tűnt.
Alapértelmezés szerint a WordPress a regisztrációs folyamatot a Multisite-re két lépésre bontja: kitölt egy űrlapot az oldalon, és aktiválja a fiókját az e-mailben küldött linkre kattintva. Miután kitöltötte az előző részben létrehozott űrlapot, a WordPress e-mailt küld rövid utasításokkal és egy linkkel a fiók aktiválásához.
A WordPress gyökérkönyvtárában található wp-activate.php fájl felelős az aktiválási oldal megjelenítéséért. A wp-activate.php is teljesen megváltoztatható. A folyamat hasonló ahhoz, amit a wp-signup.php esetében már megtettünk.
Hozzuk létre az example.org/activate/ oldalt a normál felületen keresztül. A címként bármilyen olyan URL-t használjon, amely megfelelőnek tűnik.
Másoljuk a wp-activate.php fájlt a MU beépülő moduljainkba, és csatlakoztassuk a mu-plugins/selena-network/signup/plugin.php fájlhoz.
WPMU_PLUGIN_DIR szükséges. "/selena-network/signup/wp-activate.php";
A wp-signup.php-vel ellentétben nem sok tartalom van benne. A fájl egyetlen műveletet hajt végre - aktiválja a fiókot, ha a megfelelő kulcs érkezik, és üzenetet jelenít meg a hibáról vagy a művelet sikeres befejezéséről.
Távolítsunk el minden szükségtelen ellenőrzést és követelményt – a WordPress 4.1.1-es verziójában az 1-től a 69-ig. A legvégén eltávolítjuk a get_footer() hívást. A fennmaradó tartalmat átvisszük a selena_network_activate_main() függvénybe.
Érdekes megjegyezni, hogy itt a WordPress (wp-load.php) betöltése előtt deklarálták a WP_INSTALLING állandót. Jelenléte miatt a WordPress nem tölt be bővítményeket.
A regisztrációs oldalhoz hasonlóan itt is csak az elrendezést kell javítani, ahol szükséges. A megjelenített üzenetek szövegét is módosíthatja (ebben az esetben ne felejtse el hozzáadni a MU-bővítmények szövegtartományát az összes fordítói funkcióhoz; alapértelmezés szerint nincs telepítve sehova).
Az elkészült függvény használható egy előre elkészített oldalon rövid kódon vagy külön sablonon keresztül gyermektémában.
Az aktiváló oldal készen áll, de a WordPress nem tud róla, és továbbra is küld aktiválási e-maileket a wp-activate.php hivatkozással. A wp-signup.php-vel ellentétben nincs olyan szűrő, amely lehetővé tenné a cím megváltoztatását. Ehelyett meg kell írnia egy saját funkcióját, amely e-maileket küld a megfelelő hivatkozásokkal.
Amikor kitölti és elküldi az űrlapot a regisztrációs oldalon, a WordPress felhívja a wpmu_signup_ felhasználó() vagy wpmu_signup_ blog() a regisztráció típusától függően. Mindkét függvény új bejegyzést hoz létre a wp_signups táblában, kitöltve azt a szükséges tartalommal, amely tartalmazza a fiók aktiváló kulcsát.
Ezt követően a függvénytől függően a wpmu_signup_ meghívódik felhasználó _notification() vagy wpmu_signup_ blog _notification() . Mindkét funkciónak hasonló a funkcionalitása – generál és küld egy aktiváló linket tartalmazó e-mailt, de eltérő argumentumokat vesz fel. Mindkettő rendelkezik szűrővel az esemény „elfogásához”.
If (! apply_filters("wpmu_signup_user_notification", $felhasználó, $felhasználói_e-mail, $kulcs, $meta)) hamis értéket ad vissza;
Fiókok aktiválása blog létrehozásával:
If (! apply_filters("wpmu_signup_blog_notification", $domain, $elérési út, $cím, $felhasználó, $felhasználói_e-mail, $kulcs, $meta)) ( return false; )
Nem marad más hátra, mint megírni a saját kezelőket, amelyeken belül wp_mail() -en keresztül küldenek leveleket, és a legvégén mindenképpen false-t adj vissza, hogy a WordPress ne küldjön kétszer aktiváló levelet - az egyik a tiéd, a másik az alapértelmezett levél a wp-activate.php hivatkozással.
Függvény selena_network_wpmu_signup_user_notification($user, $user_email, $key, $meta = array()) ( // A levél fejlécének, szövegének és fejlécének előállítása // ... // Küldje el a levelet, vagy adjon hozzá egy Cron feladatot a letter wp_mail($user_email , wp_specialchars_decode($subject), $message, $message_headers // Adja meg a false értéket, hogy a WordPress ne küldje el kétszer az aktiváló e-mailt return add_filter("wpmu_signup_user_notification", "selena_network_us1er,_notification"); ;
Ha SMTP-kiszolgálón keresztül küld e-maileket, vagy a regisztrációk száma nagyon magas, érdemes megfontolni, hogy ne küldjön azonnali e-mailt. Ehelyett Cron-feladatokat adhat hozzá a WordPress Cron segítségével.
A saját regisztrációs és aktiválási oldalak létrehozása után érdemes bezárni az "eredetiket". Például, ha a regisztrációs oldalon további mezők vannak, amelyeket ki kell tölteni. Ezenkívül sok WordPress-webhelyre vonatkozik a spam-regisztráció.
Két problémát megoldhat egy művelettel, ha megkéri az Apache-t, hogy adjon vissza egy 404-et, ha megpróbálja megnyitni ezeket az oldalakat. Ehhez csak néhány további RewriteRule-t kell hozzáadnia a konfigurációs fájlhoz vagy a .htaccess fájlhoz.
RewriteEngine on RewriteBase / # A reguláris kifejezések ismerete soha nem lesz felesleges :) RewriteRule ^wp-signup\.php - RewriteRule ^wp-activate\.php - # WordPress KEZDÉS # Alapértelmezés szerint nem érintjük a WordPress szabályokat :) # .. # VÉGE WordPress
Erre és sok más WordPress „problémára” számos megoldás létezik az interneten. Például a regisztrációs és aktiválási oldalak létrehozásához egyesek javasolják az eredeti wp-signup.php és wp-activate.php átírását. Ezt nem szabad megtenni, mert ha frissíted a WordPress-t, akkor a fájlokon végrehajtott összes módosítás elveszik, és a mag integritását sem tudod ellenőrizni a segítségével.
Ha bármilyen kiegészítőt, témát vagy megoldást fejleszt, szánjon egy kis időt arra, hogy megértse, mi történik a WordPress belsejében. Ehhez számos hasznos hibakereső eszköz létezik.
Ha különböző szerepköröket szeretne automatikusan hozzárendelni az új felhasználókhoz, használja a Multisite User Management beépülő modult.
Ha bármilyen kérdése vagy nehézsége van a regisztrációs és aktiválási oldalak létrehozása során a cikk elolvasása után, írjon megjegyzést, és biztosan válaszolunk.
WordPress fejlesztő. Mindenben szereti a rendet és az új eszközök megértését. A Symfony komponens architektúrája ihlette.
Az elmúlt néhány évben a webtárhely drámai változáson ment keresztül. A webtárhely-szolgáltatások megváltoztatták a webhelyek teljesítményét. Számos szolgáltatás létezik, de ma a viszonteladói tárhelyszolgáltatók számára elérhető lehetőségekről fogunk beszélni. Ezek a Linux viszonteladói tárhely és a Windows viszonteladói tárhely. Mielőtt megértenénk a kettő közötti alapvető különbségeket, nézzük meg, mi az a viszonteladói tárhely.
Viszonteladói tárhely
Egyszerűen fogalmazva, a viszonteladói tárhely a webtárhely egy olyan formája, ahol a fióktulajdonos felhasználhatja dedikált merevlemez-területét és a kijelölt sávszélességet harmadik felek webhelyein történő viszonteladás céljából. Néha a viszonteladó bérbe vehet egy dedikált szervert egy hosting cégtől (Linux vagy Windows), és továbbadhatja harmadik félnek.
A legtöbb webhelyet használó Linux vagy Windows operációs rendszert használ. Ennek az üzemidőhöz van köze. Mindkét platform biztosítja, hogy webhelye az esetek 99%-ában fent legyen.
1.Testreszabás
Az egyik fő különbség a Linux viszonteladói tárhelyterv és a Windows által biztosított között a testreszabás. Bár többféle módon kísérletezhet mindkét lejátszóval, a Linux sokkal testreszabhatóbb, mint a Windows. Ez utóbbi több funkcióval rendelkezik, mint társa, és ezért sok fejlesztő és rendszergazda nagyon ügyfélbarátnak találja a Linuxot.
2. Alkalmazások
A különböző viszonteladói tárhelyszolgáltatások eltérő alkalmazásokkal rendelkeznek. A Linuxnak és a Windowsnak is megvan a maga alkalmazási tömbje, de az utóbbi előnyt jelent a számok és a sokoldalúság terén. Ennek köze van a Linux nyílt forráskódú természetéhez. Bármely fejlesztő feltöltheti alkalmazását a Linux platformra, és ez vonzó tárhelyszolgáltatóvá teszi több millió webhelytulajdonos számára.
Azonban vegye figyelembe, hogy ha Linuxot használ webtárhelyként, ugyanakkor Windows operációs rendszert használ, előfordulhat, hogy egyes alkalmazások egyszerűen nem működnek.
3.Stabilitás
Bár mindkét platform stabil, a Linux viszonteladói tárhely a kettő közül stabilabb. Nyílt forráskódú platformként több környezetben is működhet. Ez a platform időnként módosítható, fejleszthető.
4. .NET kompatibilitás
Nem arról van szó, hogy a Linux minden lehetséges módon jobb, mint a Windows. Ha a .NET-kompatibilitásról van szó, a Windows ellopja a rivaldafényt. Webes alkalmazások könnyen fejleszthetők Windows hosting platformon.
5. Költségelőnyök
Mindkét hosting platform megfizethető. De ha úgy érzi, pénzhiány, akkor válassza a Linuxot. Ingyenes, és ezért választja olyan sok fejlesztő és rendszergazda szerte a világon.
6. Könnyű beállítás
A Windows beállítása könnyebb, mint a megfelelője. Mindent összevetve a Windows még mindig megőrzi felhasználóbarát jellegét ezekben az években.
7. Biztonság
Válaszd a Linux viszonteladói tárhelyet, mert az biztonságosabb, mint a Windows. Ez különösen igaz azokra az emberekre, akik e-kereskedelmi vállalkozásukat vezetik.
Következtetés
Választás a kettő közöttaz Ön igényeitől és a költségrugalmasságtól függ. Mindkét hosting szolgáltatásnak egyedi előnyei vannak. Míg a Windows telepítése egyszerű, a Linux költséghatékony, biztonságos és sokoldalúbb.
Őszintén szólva, régóta van ez a blogom, és a múltban különböző hirdetési hálózatokon ugráltam. Miután eltávolítottam a hirdetési egységeket attól a cégtől, amely megmerevített, visszatértem az elsőhöz. Azt is meg kell jegyeznem, hogy Soha nem szerettem a Google AdSense termékét, csak azért, mert a vizuális hirdetések „hordójának alja” nem minőségi, hanem bevételi szempontból.
Ha jól értem, Ön azt szeretné, hogy a Google hirdetései megjelenjenek a webhelyén, de más nagy cégek és ügynökségek is ezt szeretnének tenni. Így maximalizálja a keresletet és a bevételt.
Negatív tapasztalataim után a Newor Media nevű céget ajánlottam. És ha őszinte akarok lenni, eleinte főleg azért nem adtak el, mert nem találtam róluk sok információt. Találtam pár tisztességes véleményt más oldalakon, és miután beszéltem valakivel, úgy döntöttem, hogy kipróbálom. Azt kell mondanom, hogy SZUPER segítőkészek. Minden hálózat, amellyel valaha is dolgoztam, elég rövid volt a válaszok és az indulás szempontjából.
Néhány hónapja futtatom a hirdetéseket, és a bevételek nagyjából megegyeznek azzal, amit a másik cégnél kerestem. Szóval nem igazán tudom megmondani, hogy sokkal jobbak-e, mint mások, de hogy hol tűnnek ki ez az a pont, amire nagyon szeretnék rávilágítani. A velük folytatott kommunikáció nem olyan, mint bármely más hálózat, amelyen valaha is dolgoztam. Itt van egy eset, amikor valóban különböznek:
Időben tolták nekem az első fizetést Paypallal. De mivel nem vagyok az Egyesült Államokban (és ez szerintem mindenkivel megtörténik), ezért a Paypaltól levontak egy díjat. E-mailt küldtem a képviselőmnek, és megkérdeztem, van-e mód ennek elkerülésére a jövőben.
Azt mondták, hogy nem kerülhetik el a díjat, hanem hogy MINDEN DÍJOT VISSZAFIZETENEK.... A LEGÚJABB FIZETÉSÉT IS IS! Nem csak ez, de a költségtérítés 10 PERCEN belül megérkezett! Mikor volt már képes ilyen kérést benyújtani anélkül, hogy a „pénzügyi osztályra” kellett volna küldenie, hogy aztán soha ne válaszoljanak rá.
A lényeg az, hogy szeretem ezt a társaságot. Lehetséges, hogy máshol többet tudnék készíteni, nem igazán vagyok benne biztos, de van egy kiadójuk egy életre. Nem vagyok egy hatalmas oldal, és nem termelek sok bevételt, de úgy érzem, nagyon fontos ügyfél, amikor beszélek velük, ez egy leheletnyi friss levegő egy olyan iparágban, amely megérett a csalásra és a nem reagálásra.
A Raspberry Pi Alapítvány által 2012-ben megalkotott mikroszámítógépek rendkívül sikeresek voltak a kisgyermekek kreativitásának felkeltésében, és ez az egyesült királyságbeli székhelyű vállalat olyan programokat kezdett kínálni, amelyek megtanulják a kódolást, mint például a pi-top és a Kano. Most van egy új startup, amely a Pi elektronikát használja, és az eszköz Pip néven ismert, egy kézi konzol, amely érintőképernyőt, több portot, vezérlőgombokat és hangszórókat kínál. Az eszköz mögött az az ötlet, hogy a fiatalabb egyéneket bevonja egy retro játékeszközzel, amely egy webalapú platformon keresztül kódtanulási élményt is kínál.
A Pip mellett kínált csodálatos szoftverplatform lehetőséget kínál arra, hogy elkezdjük a kódolást Python, HTML/CSS, JavaScript, Lua és PHP nyelveken. Az eszköz lépésenkénti oktatóanyagokat kínál, amelyek segítségével a gyerekek elkezdhetik a kódolást, és lehetővé teszi számukra, hogy még LED-eket is villogtassanak. Bár a Pip még egy prototípus, minden bizonnyal óriási siker lesz az iparágban, és bevonja a kódolás iránt érdeklődő gyerekeket, és biztosítja számukra a szükséges oktatást és erőforrásokat ahhoz, hogy fiatalon elkezdhessék a kódolást.
A szabványos wp-signup.php helyett saját regisztrációs oldalt hozunk létre egy multisite számára.
Egy tipikus WordPress telepítésben a regisztrációs oldalt (bejelentkezés, jelszó visszaállítása) a wp-login.php fájl adja ki.
A wp-login.php fájlban külön feltételek vannak a több helyhez. Tehát, ha követi a /wp-login.php?action=register hivatkozást egy több webhelyen, a WordPress átirányítja a /wp-signup.php oldalra. Sok téma nem teszi igazán vonzóvá az oldalt, ezért elkészítjük a sajátunkat.
Alapértelmezés szerint a WordPress megnyitja a regisztrációs oldalt (wp-signup.php) a hálózat fő domainjén (webhelyén). Azonban létrehozhat egy külön regisztrációs oldalt a hálózat minden egyes webhelyéhez, még akkor is, ha azok eltérő témájúak. Megvizsgáljuk azt az esetet, amikor a hálózat minden oldalának van saját regisztrációs oldala, de ugyanazt a témát használják, és a webhelyek csak nyelvükben különböznek egymástól. Ha különböző témákat használ, több kódot kell írnia.
Nem. Úgy tűnik, ez a fájlnév minden WordPress-ről szóló cikkben szerepel. Esetünkben, tekintettel arra, hogy a regisztrációs funkcionalitást több webhelyre tervezték, célszerű beépíteni az MU bővítményekbe, amelyek betöltődnek bármely webhely megnyitásakor.
Érdemes megjegyezni, hogy az MU-bővítmények a normál beépülő modulok előtt és a WordPress mag teljes betöltése előtt töltődnek be, így egyes függvények meghívása végzetes hibákhoz vezethet a PHP-ben. Az ilyen „korai” berakodásnak is megvannak a maga előnyei. Például egyetlen témán belül sem kapcsolódhat bizonyos műveletekhez, amelyek még azelőtt indulnak el, hogy a functions.php fájl betöltődik a témából. Példa erre a Jetpack beépülő modul jetpack_module_loaded_related-posts (a kapcsolódó-posts a modul neve) formátumú műveletei, amelyek segítségével figyelhető a Jetpack modulok aktivitása. Ehhez a művelethez nem lehet „csatolni” a témafájlból, mert a művelet már a téma betöltése előtt elindult – a bővítmények a témák előtt töltődnek be. A WordPress betöltési sorrendjének általános képét a kódexben található Műveletreferencia oldalon tekintheti meg.
Az MU bővítmények tetszőleges számú fájlt és bármilyen struktúrát tartalmazhatnak, amely logikusnak tűnik. Valami ehhez hasonló hierarchiához ragaszkodom:
|-mu-plugins |-|-load.php |-|-|-selena-network |-|-|-|-regisztráció |-|-|-|-|-plugin.php |-|-|-| -|-... |-|-|-|-jetpack |-|-|-|-|-plugin.php
A load.php fájl tartalmazza a hálózatunkhoz szükséges összes „plugint”:
// Fordítások betöltése az összes kiegészítőhöz load_muplugin_textdomain ("selena_network", "/selena-network/languages/"); // A hálózati regisztrációhoz WPMU_PLUGIN_DIR szükséges. "/selena-network/signup/plugin.php"; // Más bővítményekhez // WPMU_PLUGIN_DIR szükséges ...
A selena-network mappán belül a beépülő modulok mappái vannak tárolva, mindegyiknek saját plugin.php-je van, amelyet a load.php-ben is tartalmazunk. Ez rugalmasságot és lehetőséget biztosít a dolgok gyors ki- és bekapcsolására.
A regisztrációs oldal címének megadásához használja a wp_signup_location szűrőt. A wp-login.php fájlban található, és felelős a wp-signup.php fájlra való átirányításért.
Case "register" : if (is_multisite()) ( wp_redirect(apply_filters("wp_signup_location", network_site_url("wp-signup.php"))); kilépés;
Adjuk hozzá a függvényünket a mu-plugins/selena-network/signup/plugin.php fájlhoz, amely visszaadja a regisztrációs oldal címét az aktuális oldalon:
Függvény selena_network_signup_page ($url) ( return home_url () . "/signup/"; ) add_filter ( "wp_signup_location", "selena_network_signup_page", 99);
A selena_network az az előtag, amelyet a webhelyemen lévő MU-bővítményeken belüli összes függvény nevében használok az ütközések elkerülése érdekében. Ezt a saját egyedi előtagjával kell helyettesíteni. A szűrő hozzáadásának prioritása 99, mivel egyes pluginek, például a bbPress és a BuddyPress felülírhatják ezt a címet a sajátjaikkal (az MU beépülő modulok korábban töltődnek be, mint a hagyományos bővítmények, lásd fent). Ne feledje, hogy a network_site_url() helyett a home_url() függvényt használjuk, hogy a látogató ugyanabban a tartományban maradjon. Bármely URL használható címként.
Most hozzunk létre egy oldalt site.com/signup/ címmel a normál felületen keresztül, és a gyermektéma mappában az új oldalunk sablonja a page-signup.php. A „regisztráció” szó helyett egyedi azonosítót is használhat.
Az új sablonon belül meg kell hívni a selena_network_signup_main() függvényt, amely megjeleníti a regisztrációs űrlapot.
Érdemes megjegyezni, hogy a teljes sablonfolyamat nem kötelező, és ehelyett létrehozhat saját rövid kódot, amely a selena_network_signup_main() függvényt is meghívja.
Most hozzunk létre egy függvényt, amely megjeleníti a regisztrációs űrlapot. Ehhez másolja a wp-signup.php és wp-activate.php fájlokat a WordPress gyökérkönyvtárából a mu-plugings/selena-network/signup/ mappába (és ne felejtse el a mu-plugins/selena-network-en belül csatlakoztatni őket /signup/plugin.php) . A fájlokkal végzett további manipulációkat rendkívül nehéz és hosszú leírni, ezért ezeket magának kell elvégeznie. Csak leírom, hogy pontosan mit kell tenni, és közzéteszem a projektem forrásfájljait:
A wp-activate.php fájlon belül nagyjából ugyanezt kell tennie:
A wp-activate.php fájl felelős a fiókaktiválási oldalért. A regisztrációs oldalhoz hasonlóan ehhez is külön sablont kell készíteni, amelyen belül a wp-activate.php fájlból kell meghívni a függvényt.
A regisztrációs oldal e-mailt küld a látogatónak a fiók aktiválásához szükséges linkkel. Alapértelmezés szerint ezt az ms-functions.php fájl wpmu_signup_user_notification() függvénye teszi meg. Funkcióit kölcsönözheti saját funkciójához. Ennek a funkciónak az elkerülésének oka, hogy elküldi a fiókaktiválási hivatkozást a wp-activate.php webhelyről. Ezt a funkciót a wpmu_signup_user_notification szűrővel lehet „kikapcsolni”, false értéket adva vissza (ha ez nem történik meg, az aktiváló levél kétszer kerül elküldésre, oké, valójában két különböző betű).
Függvény armyofselenagomez_wpmu_signup_user_notification($user, $user_email, $key, $meta = array()) ( // ... // A wpmu_signup_user_notification() függvény kódja wp_mail($user_email, wp_specialchars_decode($subjecters), $ssage_subjecters), ; return false ) add_filter("wpmu_signup_user_notification", "armyofselenagomez_wpmu_signup_user_notification", 10, 4);
Ennek eredményeként a Selena téma regisztrációs oldala sokkal tisztábbnak és rendezettebbnek tűnt.
Az interneten sok más, nem túl helyes módszer létezik ugyanerre - Apache átirányítások, AJAX űrlapok, amelyek nem működnek Java Script nélkül stb. Nem igazán tetszett ez az egész, ezért megpróbáltam olyan helyesen csinálni, mint saját weboldalamon lehetséges.
Megjegyzem, óvatosan szerkessze a fájlokat, és próbáljon meg túlságosan eltérni az eredetitől, hogy a jövőben, ha a WordPress módosítja a wp-signup.php és a wp-activate.php fájlokat, könnyebben összehasonlítható legyen. egymással, hogy változásokat találjanak.
Ne felejtse el megnézni az összes fent leírt függvény forráskódját, hogy teljes mértékben megértse, mi és hogyan történik a kódban.
Még a legkisebb WordPress webhelyeket is gyakran sújtja a spam regisztráció. A botok szűrésére végtelen feltételeket lehet írni, sokszor inkább mesterséges intelligencia létrehozására tett kísérlet :) Multisite esetén sokat segített az Apache rendszeres átirányítása, aminek segítségével nyitáskor kértem egy 404-et / wp-signup.php és /wp-acitvate.php (nem vagyok szakértő az Apache beállításában, ezért lehet, hogy a szabályaim nem túl helyesek).
RewriteEngine on RewriteBase / RewriteRule ^wp-signup\.php - RewriteRule ^wp-activate\.php - # WordPress KEZDÉSE # Alapértelmezés szerint nem érintjük a WordPress szabályait :) # ... # WordPress VÉGE
P.S. Igyekszem minél részletesebben leírni néhány harmadik féltől származó dolgot, mert amikor elkezdtem, néha nem volt, aki sok mindent javasoljon és elmagyarázzon. Azt is hiszem, hogy az ilyen apró tippek más anyagokkal kapcsolatban arra ösztönöznek valakit, hogy valami újat tanuljon, és bővítse tudásterületét. A RewriteRule bejegyzések reguláris kifejezéseket használnak, egyáltalán nem bonyolultak, például a ^ szimbólum egy sor elejét jelenti.