Meny
Är gratis
registrering
Hem  /  Installation och konfiguration/ Hur man skapar en egen registreringssida i WordPress Multisite. Form i din layout

Hur man skapar en egen registreringssida i WordPress Multisite. Form i din layout

--- Välj ett lager --- Buffalo Grove IL 60089 USA (USA) (Buffalo Grove IL 60089 USA (USA)) Chicago USA USA Tamara (16677 SW Blanton street ALOHA. Oregon 97078) Highland Park (USA, USA Highland Park, IL 60035 PO Box 723 # 24) Istanbul (Istanbul, Gençturk Cad.15, Bırlik Han. K-5.d.55 # 1) Istanbul (Nişantaşı-Valikonağı cd-Şehit İsmet Armağan sk- No 3/17) Paris (13R Villa Madrid 92200 Neuilly-sur-Seine) Republica Moldova, Falesti (s.Fagadau) South Kensington (Bute street) Adler (Quiet Lane 2, Kudepsta District) Aktobe (Aktyubinskaya str. 47/2) Almetyevsk (Almetyevsk, Lenin st.) 13, kontor 306) Anapa (Terskaya st. 88, 3: e våningen) Astrakhan (Kommunisticheskaya st. 17, kontor 4) Atyrau (Atyrau, Azattyk ave. 42, kontor 206) Berdyansk (Zaporozhye -regionen) Bishkek (Bishkek Chui ave. 32B Izumrud köpcentrum, kontor C-5) Blagoveshchensk (50 Let Oktyabrya st. 15. Amurskaya Yarmarka, kontor 575) Buguruslan (Krasnoznamennaya st. 47/2) Veliky Ustyug (Veliky Ustyug, Krasnaya st., 61 (2: a våningen) centrum)) Vladivostok (Svetlanskaya st. 147 kontor 2/4) B olgograd (staden Volgograd, Aviatorov motorväg 15, lager 23) Dyurtyuli (Agidel st., 4, kvartal 2) Yeisk (Karla-Marx st. 42/1) Jekaterinburg (st. Pervomayskaya 56, kontor 308) Jekaterinburg (Mamina-Sibiryaka str. 10, kontor 3) Ivanovo (Sheremetyevsky prospect, 85G, Business Center "Premium Plaza" 2: a våningen, kontor 212) Izhevsk (Lenina 21, kontor 304. Business Center "Forum" ) Izberbash (Chapaeva 4 ind. 368501) Irkutsk (Irkutsk, Gornaya street 4 (intill köpcentret Karamel) kontor 407) Ishimbay (Zorge, hus 18) Yoshkar-Ola (Lenin Ave. 24v, kontor 318) Kazan (10, Odinoprovka Grivki lane, Kozya Sloboda tunnelbanestation, även Dekabristov st., 85 "B" Business center "Relita" kontor 411) Kamensk-Uralsky (Prospect Pobedy 56) Kemerovo (Demyan Bednogo st., 1 office 401) Kiev (Olevskaya str. 9 apt. 4 (anländer med föregående samtal) Komsomolsk-on-Amur (Shikhanova st. 10, kontor 1 ingång från Komsomolskaya från byggnadens ände.) Kostroma (Prospect Mira 51, kontor 15) Krasnodar (st. Krasnaya 124 kontor 302) Krasnoyarsk (Krasnoyarskiy Rabochiy Ave., 120 Shopping Center "Krasnoyarye") Lviv (Sobornaya Square 12A) Makhachkala (Akushskiy 9v) Miass (30 Let VLKSM Street 85) Minsk (Korzhenevskogo, 26) Moskva (Tunnelbana: VDNKh, st. , 10, byggnad 4 kontor 10 6) Moskva (Simferopolsky Boulevard) Moskva (Glazovsky Lane 5, Entré till bågen, dörr till vänster om tunnelbanestationen: Smolenskaya-500m, Kropotkinskaya-1km., Park Kultury-1km.) Moskva (m. Chekhovskaya, Pushkinskaya, Tverskaya. Strastnoy boulevard, 6, byggnad 1, Delovoy Tsentr, kontor 421) Moskva (Lobnya, Mayakovskogo st., 4A, TP1, 3: e våningen, kontor 301) Moskva (Molodezhnaya tunnelbanestation, Yartsevskaya street, byggnad 27, byggnad 9 Ozdorovitelny Center "Four Element ") Moskva (Krasnaya Presnya 38-45) Moskva (g. Moskva tunnelbanan Taganskaya radiell avfart 3, 30 meter från tunnelbanan. St. Bolshie Kamenshiki 1, 4: e våningen, kontor 30) Moskva (metro Leninsky prospect, Vavilova 9A, byggnad 6, kontor 10 B, 3: e våningen) Moskva (tunnelbanan Novoslobodskaya, Mendeleevskaya, Mayakovskaya, Belorusskaya (radial). 4: e Tverskaya -gatan -Yamskaya, 24 . Ingång genom bågen, ZOO BUTIK) Moskva (Belorusskaya (ring) tunnelbanestation, 5 meter från tunnelbanans utgång.) Moskva (M. ALTUFEVO, Pskovskaya st. 6) Moskva (Moskva, st. Radiohus 5, byggnad 4.2 våning , 201 kontor (fristående 3-vånings byggnad)) Naberezhnye Chelny (Pushkin st. 4 (45/05), ingång 2, kontor 2) Naberezhnye Chelny (Sh. Usmanova st., 122 kb. 111 1: a våningen) Nalchik (Nalchik, Kirov str. 292a, 2: a våningen, kontor 6) Nakhodka (Pogranichnaya st., 6, kontor 304) Nevinnomyssk (torget 50 år 8A oktober) Nefteyugansk (12 mikrodistrikt 7) Nizhnevartovsk (Nizhnevartovsk, Mira street 31B.) Nizhny Novgorod ( Kominterna street 139, office 603 (Business center OREOL)) Nizhny Novgorod (m. Gorkovskaya, street Kostina, 3, BC "New square", 2nd floor, office 239) Nizhny Tagil (nära L. Krasnoarmeyskaya 42a, kontor på tredje våningen 4) Nizhny Tagil (Nizhny Tagil, st. Papanina 5, kontor 1, Kushva, Gornyakova st. 2/11) Nikolaev (Ryumin st. 5/1) Novorossiysk (Krasnodarregionen, Novorossiysk, Tsemdolina by, Guldfiskst., 15) Novorossiysk (Murat Akhedzhak st., D. 4 ) Novosibirsk (Str., 42 Oktyabrskaya, office 601, Business center, approx. Lenin square, Mayakovsky cinema) Novosibirsk (Gogol street 33/1. 20 meter från Marshal Pokryshkina tunnelbanestation, shoppingcenter på Gogolya.) Novotroitsk (Sovetskaya st., D .144 kvartal 26) Novy Urengoy (Druzhba mikrodistrikt, byggnad 4/3, apt 183) Norilsk (Leninsky prospect, 47a, kontor 79) Nur -Sultan (Astana) (Beibitshilik 14, BC Marden, kontor 708) Odessa (b - p Franska 60 multi-profil rehabiliterings sanatorium "SARTUS") Oktyabrsky (Microdistrict 32a, byggnad 6, apt.88) Omsk (St. första våningen, höger veranda.) Orsk (Lenin Ave. 93) Pavlodar (st. 5, byggnad 5 ) Pyatigorsk (street 295 Rifle Division och 13, byggnad 2) Rostov-on-Don (Sobornyi lane 21 office 10 B) Salavat (Lenin street, building 3 office 209, 2nd floor) Samara (106 Novo-Sadovaya street, office 804, left lift, 8th floor) St . Petersburg (tunnelbana: Vasileostrovskaya, 13: e raden på Vasilievsky Island, 78, kontor 182) Sankt Petersburg (tunnelbanan Dostojevskaya (5 meter) och tunnelbanan Vladimirskaya (300 meter) VLADIMIRSKY PASSAGE 3: e våningen, central ingång FÖRSTA GALLERI, pr. Vladimirsky 19) Sankt Petersburg (tunnelbanan Admiralteyskaya (10 meter) tunnelbanan Nevsky prospect (7 min promenad). TC "ADMIRAL" Malaya Morskaya street, 4/1) Sankt Petersburg (tunnelbanan Sennaya, tunnelbanan Sadovaya, m Spasskaya 1 minut till fots, Efimova st. 1, våning 2, kontor 4, affärscenter "Sennaya 4", ingång till vänster om caféet "Sever") Saratov (Bolshaya Gornaya st., 359V, kontor nr 3) Sevastopol (Ochakovtsev str. 19, centrum "Plaza", bottenvåningen, kontor 29/2) Snezhinsk (st. Zababakhina 19 a) Sochi (Sochi ko. Donskaya house 15.) Sochi (st. Sovetskaya 42 office 204) Stavropol (st. Lomonosov 21 office 18) Sterlitamak ( 85 Khudayberdin street, 3rd floor) Surgut (30 years of Pobedy street, 64) Tobolsk (Tobolsk, 6 microdistrict, house 11, office 39 (ingång från Komsomolsky prospect)) Togliatti (40 år gammal Pobedy, 50, office 212a, TD Raduga 1: a våningen) Tomsk (Tomsk, Sovetskaya street 84) Tuymazy (Michurina street, 15 office 2) Tyumen (72 Herzen street, office 214) Ulyanovsk (Ryabikova street, bld. 73) Ust-Kamenogorsk (57 Gorky str., Office 213) Ufa (Verhnetorgova square, 6 (Business center NESTEROV)) Khabarovsk (Postysheva st., 16 ofi s 108) Khanty-Mansiysk (G. Khanty-Mansiysk, st. Karl Marx 15, 2: a våningen.) Chelyabinsk (Prospect Pobeda 168, 3: e våningen, kontor 36.) Cherkessk (Lenin st. 101) Chita (Babushkina st. 104, kontor 425) Chishmy (Koltsevaya 17) Chishmy (Druzhby ave., 1B ) Schweiz (Arosio via Terra Sotto, 1 6939) Shymkent (47 Kolkhoznaya st.) Yuzhno-Sakhalinsk (21 Angarsky lane) Yakutsk (Dzerzhinsky st. 8 / 3b) Yakutsk (Yakutsk) Yalta (Lenin-vallen, 5a, SEC "Fontän, 4: e våningen) Yanaul (Sovetskaya st., 23, kontor N 8, Beryozka -byggnaden) Yaroslavl (57 ShowRum) Yaroslavl (Chkalova st. 2) Birsk Bashkortostan ()?>

APOTHEOS APOTHEOSIS (från den grekiska apoteosen - avgudning), 1) i det hellenistiska Grekland och det antika Rom, avgudningen av en statsman, hjälte, kejsare, hans förvärv av gudomlig väsen. Under renässansen överfördes namnet på fenomenet till dess bild inom måleri, teater. I modern mening är apoteos en scen för förhärligande av en hjälte, en spektakulär "levande bild" som plastiskt uttrycker skådespelets huvudidé, som avslutar en musikalisk eller dramatisk föreställning. Formen av apoteos (liksom en panegyrisk föreställning, som liksom var en apoteos som utvecklades i tid) utvecklades på västeuropeiska teatrar och på den ryska hovteatern på 1500- och 1700 -talen; utvecklades också i teatern av revolutionära epoker - i Frankrike i slutet av 1700 -talet, i Ryssland efter oktoberrevolutionen. 2) I vid bemärkelse - förhärligande, upphöjelse av en person, händelse, fenomen.

Modern encyklopedi. 2000 .

Synonymer:

Se vad "APOPHEOSIS" är i andra ordböcker:

    - (grekiska från apotheum för att gudomliggöra). 1) räkning av hjältar och romerska kejsare till gudarnas värd. 2) en målning som visar en känd person i form av en hednisk gud. 3) en högtidlig bild som avslutar teatern, spela. Ordbok för främmande ord, ... ... Ordbok för främmande ord i det ryska språket

    Centimeter … Synonym ordbok

    apoteos- a m. apotéos f. 1. Läser för gudarnas värd. Sl. 18. Enligt apoteosen hos Hercules. Pelsk. Qom 2 196. Hallens främsta skönhet är plattan, målad på duken med oljefärger av målaren Lemoine, och som representerar Herculean idolization ... ... Historical Dictionary of Russian Gallicisms

    Apoteos- (från grekisk apoteosgodifiering), 1) i det hellenistiska Grekland och det antika Rom, gudomliggandet av en statsman, hjälte, kejsare, hans förvärv av en gudomlig essens. Under renässansen överfördes namnet på fenomenet till dess bild ... Illustrerad encyklopedisk ordbok

    - (från den grekiska apoteosen - avgudning), inledningsvis bland de gamla egyptierna, och sedan bland grekerna och romarna, den högtidliga riteringen av härskning av härskarna för deras särskilda förtjänster. Apoteosen, som med tiden förvandlades till härskarkult, gick tillbaka till ... ... Filosofisk encyklopedi

    - (från grekiska. apoteosgodifiering). Big Encyclopedic Dictionary

    APOTEOS, apoteos, make. (Grekisk apoteosgodifiering). 1. Den gamla riten att ge gudomliga ära åt hjälten, kejsaren (ist.). 2. Speciellt högtidligt offentligt beröm av någon, som har karaktären av att kröna sin aktivitet (bok) ... Ushakovs förklarande ordbok

    APOPHEOS, ah, make. 1. Glorifiering, upphöjelse av någon vad n. (bok). 2. Högtidlig sista massscen av några teaterföreställningar (special). | adj. apoteos, åh, åh. Ozhegovs förklarande ordbok. SI. Ozhegov, N.Yu. Shvedova. 1949 ... ... Ozhegovs förklarande ordbok

    - (från den grekiska apoteosen avgodgörande) i antiken, gudstjänstceremonin för antika grekiska statsmän, senare romerska kejsare. I teaterbranschen kallas apoteosen det sista högtidliga massstadiet i föreställningen eller ... ... Statsvetenskap. Ordbok.

    Jean Auguste Dominique Ingres. Apoteos av Napoleon, 1853 Apoteos, föråldrad. apoteos ... Wikipedia

Böcker

  • Apotheos av grundlöshet
  • Grundlöshetens apoteos, Shestov Lev. Grundlöshetens apoteos är förmodligen den mest kända av Lev Shestovs böcker och åtminstone den mest skandalösa. I den gör han en frontal attack mot universellt bindande kunskap och ...

Centimeter … Synonym ordbok

BAINKI, oförändrad. kap. (barnslig). Sömn. Vill du ha en baine? Ligg ner bainki. Ushakovs förklarande ordbok. D.N. Ushakov. 1935 1940 ... Ushakovs förklarande ordbok

Gör / gör bainki (köp hej). Zharg. pir Shuttle. Sömn. Maximov, 21 ... En stor ordbok med ryska ordspråk

Jag predikerar. vardaglig Om sömnens tillstånd (i barns tal eller i ett samtal mellan vuxna och barn). II int. vardaglig Används som en komponent i en vaggvisa. Efremovas förklarande ordbok. T.F. Efremova. 2000 ... Modern förklarande ordbok för det ryska språket av Efremova

bainki- b ainki, omisskännlig ... Rysk stavningsordbok

bainki- oförändrad ... Stavningsordlista för det ryska språket

Int., I funk. berättelse. = Bai bye (II -tecken.) ... encyklopedisk ordbok

bainki- internationellt; i func. berättelse. = köp före 2) ... Ordbok med många uttryck

bainki- ba / ink / i, mellan ... Morfemisk-stavande ordbok

Böcker

  • Bainki, Tokmakova I.P .. I den här boken kan du läsa eller till och med sjunga vaggvisar för din bebis. Boka med snitt ...
  • Bainki (red. 2006), Irina Tokmakova. I den här boken kan du läsa eller till och med sjunga vaggvisar för din bebis. Bok med snitt. ISBN: 5-9524-2404-X ...

Låter dig använda en WordPress -installation för flera webbplatser samtidigt. Samtidigt får varje webbplats sina egna tabeller i databasen med ett unikt prefix.

Tabeller med data från registrerade användare är vanliga för alla webbplatser i nätverket. Detta är ett klart plus och genom att registrera dig en gång kan du få åtkomst till flera webbplatser. Dessutom kan samma konto ha olika rättigheter på varje webbplats. Till exempel kan en användare vara en redaktör på en webbplats och på en annan en administratör.

I en typisk installation WordPress -sida registrering, auktorisering och återställning av lösenord matar ut filen wp-login.php.

  • wp -login.php - behörighet
  • wp -login.php? action = register - registrering
  • wp -login.php? action = lostpassword - lösenordsåterställning

I läget Multisite börjar WordPress-kärnan bete sig lite annorlunda, och när du klickar på wp-login.php? Action = registerlänk kommer en omdirigering till wp-signup.php att ske. Detta är registreringssidan för ditt nätverk som WordPress har som standard.

Förutom att registrera vanliga användarkonton kan du skapa en ny webbplats på den om superadministratören har aktiverat den här funktionen i nätverksinställningarna (Nätverksadmin → Inställningar → Nätverksinställningar).

I de flesta teman ser registreringssidan inte särskilt bra ut. Många skinn använder CSS -ramverk som Bootstrap och sina egna specifika klasser för att styla olika element på sidor, så det är svårt att skriva en enda HTML som fungerar för alla.

Men misströsta inte om sidan ser orenlig ut. Filen wp -signup.php är bra först, när du inte har tid att gå igenom alla detaljer på webbplatsen - kan du fokusera på andra viktigare sidor och innehåll.

När du är redo att skapa din egen registreringssida är wp-signup.php ett bra exempel och exempel för att hjälpa dig att förstå de olika funktioner som WordPress tillhandahåller för att hantera och validera användarinmatning och skapa nya konton.

Nätverkets huvudsakliga webbplats

Som standard öppnar WordPress en registreringssida (wp-signup.php) på huvuddomänen (webbplatsen) i nätverket. Du kan dock skapa registreringssidor för varje webbplats i nätverket, även om de har ett tema.

Vi kommer att överväga fallet när alla webbplatser i nätverket använder samma tema, men var och en har en registreringssida. Webbplatser skiljer sig åt i språk (engelska och ryska), så registreringssidan kommer att visas på webbplatsens "modersmål". Om webbplatser använder olika teman beror allt på vilken typ av teman de är, om samma layout passar dem (en utmärkt situation som kan driva dig att förena alla dina teman) eller om det är värt att räkna ut sidorna individuellt.

Alternativ till functions.php

Filordning

MU -plugins kan innehålla valfritt antal filer och strukturer som verkar logiska för dig. Jag håller mig till en sådan här hierarki:

| mu-plugins | | load.php | | selena-nätverk | | | registrering | | | | plugin.php | | | ... | | | jetpack | | | | plugin.php

Filen load.php innehåller översättningar och alla nödvändiga "plugins":

// Ladda översättningar för MU-plugins load_muplugin_textdomain ("selena_network", "/ selena-network/ languages/"); // Funktionell för registreringssidan kräver WPMU_PLUGIN_DIR. "/selena-network/signup/plugin.php"; // Ett annat plugin // kräver WPMU_PLUGIN_DIR ...

Pluginmappar lagras i selena-nätverkskatalogen. Var och en har sin egen plugin.php, som vi inkluderar i load.php. Detta ger flexibiliteten och möjligheten att omedelbart inaktivera och aktivera enskilda komponenter i ett fungerande projekt i nödfall.

Registreringssida

Efter att ha kommit fram till var och hur vi kommer att skriva koden kan vi fortsätta med att skapa registreringssidan.

Låt oss skapa en sida med adressen example.org/signup/ via ett vanligt gränssnitt. Som adress kan du använda valfri URL som verkar lämplig för ditt projekt.

Omdirigera till den registreringssida som krävs

För att WordPress ska veta om vår nya registreringssida och omdirigera till den, när du klickar på länken "Registrera", används filtret wp_signup_location. Den kan hittas inuti wp-login.php och är ansvarig för att omdirigera till wp-signup.php som standard.

Fall "register": if (is_multisite ()) (wp_redirect (apply_filters ("wp_signup_location", network_site_url ("wp-signup.php"))); exit; // ...

Som du kommer ihåg öppnas registreringssidan som standard på nätverkets huvuddomän. Det är därför network_site_url () används här.

Låt oss lägga till vår hanterare till filtret i mu-plugins / selena-network / signup / plugin.php, som returnerar adressen till registreringssidan på den aktuella webbplatsen:

Funktion selena_network_signup_page ($ url) (return home_url ("signup");) add_filter ("wp_signup_location", "selena_network_signup_page", 99);

selena_network är prefixet som jag använder i namnen på alla funktioner i MU -plugins på min webbplats för att undvika kollisioner, det bör ersättas med mitt eget unika prefix. Filtret har en prioritet på 99 eftersom vissa plugins som bbPress och BuddyPress kan skriva över denna URL med sina egna (MU -plugins laddas tidigare än vanliga plugins, se ovan).

Observera att home_url () används som, till skillnad från network_site_url (), returnerar adressen till den aktuella webbplatsen, inte huvudplatsen för nätverket.

Funktionalitet wp-signup.php

Filen wp-signup.php innehåller många funktioner och kod. För att se helheten kan du använda kodvikt. Detta kallas vanligtvis "kodning" på engelska.

I början av filen produceras från 1 till 80 rader (i version 4.1.1) olika kontroller och visar "start" av sidan med get_header ().

Därefter deklareras många metoder och innan vi börjar arbeta med dem är det värt att förstå vad varje funktion gör. Många av dem använder ofta andra funktioner med wpmu_-prefixet inuti dem, som alla deklareras i filen wp-includes / ms-functions.php. Det här avsnittet är svårt att förstå utan att själv se koden. Nedan följer en kort beskrivning av huvudfunktionerna om du får problem.

  • wpmu_signup_stylesheet () - Mata ut ytterligare CSS på registreringssidan.
  • show_blog_form () - fält för webbplatsregistrering (adress, namn, synlighet för sökmotorer).
  • validate_blog_form () - validera den angivna webbadressen och namnet med wpmu_validate_blog_signup ().
  • show_user_form () - fält för användarregistrering (inloggning och e -postadress).
  • validate_user_form () - validering av inmatad inloggning och e -postadress. e -post med wpmu_validate_user_signup ().
  • signup_another_blog () - fält för registrering av nya webbplatser med show_blog_form () för användare som redan är registrerade på webbplatsen.
  • validate_another_blog_signup () - kontrollerar webbplatsens webbadress och titel med validate_blog_form ().
  • signup_user () är huvudfunktionen för att visa registreringssidans fält.
  • validate_user_signup () - validerar användarnamn och e -postadress. e -post med validate_user_form ().
  • signup_blog () - fält för att ange adress, namn och synlighet på webbplatsen (det andra steget i registreringen) med hjälp av show_blog_form ().
  • validate_blog_signup () - kontrollerar inloggning, e -postadress. mail, adress och webbplatsnamn.

Längst ner i filen wp-signup.php (från rad 646 i version 4.1.1), huvudlogiken för registreringssidan, som använder alla metoder som beskrivs ovan. Denna del av koden flyttas inte till en funktion. I slutet kallas get_footer ().

Kopiera funktionen för wp-signup.php

Därefter kommer vi att beskriva proceduren för att kopiera wp-signup.php till MU-plugins och göra ändringar i "gaffeln". Detta kanske inte verkar vara det bästa den rätta vägen... Istället kan du skriva din egen formvalidering och visa funktioner från grunden med hjälp av klasser snarare än vanliga funktioner. Enligt min mening har wp-signup.php redan all nödvändig logik för vår sida, allt som återstår är att göra små ändringar.

När du uppdaterar WordPress ändras wp-signup.php då och då, men det betyder inte att du måste synkronisera din gaffel med varje version. Funktionerna i wp-signup.php är i huvudsak endast engagerade i HTML-utdata, datavalidering, skapande av konton och webbplatser, metoder med prefixet wpmu_, deklarerat i ms-functions.php, är inblandade.

Låt oss börja skapa en funktion som visar registreringsformuläret på sidan. För att göra detta, kopiera wp-signup.php från WordPress-roten till mu-plugings / selena-network / signup /. Låt oss ansluta det inuti mu-plugins / selena-network / signup / plugin.php).

Kräv WPMU_PLUGIN_DIR. "/selena-network/signup/wp-signup.php";

Ta bort alla nödvändiga och onödiga kontroller från början av den kopierade filen. I version 4.1.1 är detta hela koden från 1 till 80 rader.

Vi är nu redo att skapa huvudfunktionen för att visa registreringsformuläret. För att göra detta, flytta all logik från rad 646 till slutet av filen till en funktion som heter selena_network_signup_main. I slutet tar du bort de två extra stängningarna

(rad 722 och 723), samt ett samtal till get_footer ().

I den nyskapade selena_network_signup_main (), i början, deklarerar vi den globala variabeln active_signup, som används av alla andra metoder från den här filen. Och lägg till ett samtal till händelsen before_signup_form, som vi tog bort från början av filen.

Funktion selena_network_signup_main () (global $ active_signup; do_action ("before_signup_form"); // ...)

Nu återstår bara att ändra layouten på alla platser där det är nödvändigt och registreringssidan är klar.

Utmatning av registreringsformuläret

Det finns minst två alternativ här. Mer bekväm väg- skapa en kortnummer och placera den på sidan med en vanlig editor.

// Skapa en kortkod network_signup add_shortcode ("network_signup", "selena_network_signup_main");

Det andra alternativet är att skapa en sidmall för page-signup.php i underordnad temamapp. I stället för ordet "registrering" kan du använda ett unikt ID som tilldelats sidan. Inne i mallen, lägg till önskad layout och ring selena_network_signup_main () på rätt plats.

Som ett resultat ser min registreringssida mycket bättre och renare ut.

Aktiveringssida

Förbi standard WordPress konventionellt delar registreringsprocessen i Multisite i två steg - att fylla i ett formulär på webbplatsen och aktivera ett konto när du klickar på länken som skickas till e-post... När du har fyllt i formuläret som skapades i föregående avsnitt skickar WordPress ett e -postmeddelande med en liten instruktion och en länk för att aktivera ditt konto.

Filen wp-active.php som finns i WordPress-rotkatalogen ansvarar för att aktiveringssidan visas. wp-active.php kan också ändras helt. Processen liknar den vi redan gjorde för wp-signup.php.

Låt oss skapa en sida example.org/activate/ genom ett vanligt gränssnitt. Använd vilken URL du tycker passar adressen.

Låt oss kopiera wp-active.php-filen till våra MU-plugins och anslut den till mu-plugins / selena-network / signup / plugin.php.

Kräv WPMU_PLUGIN_DIR. "/selena-network/signup/wp-activate.php";

Det finns inte mycket innehåll inuti, till skillnad från wp-signup.php. Filen utför den enda åtgärden - den aktiverar kontot om rätt nyckel tas emot och visar ett felmeddelande eller att åtgärden har slutförts.

Låt oss ta bort alla onödiga kontroller och kräva - från 1 till 69 rader i WordPress 4.1.1. I slutet, låt oss ta bort samtalet get_footer (). Flytta resten av innehållet till funktionen selena_network_activate_main ().

Det är intressant att notera att WP_INSTALLING-konstanten deklarerades här innan WordPress laddades (wp-load.php). Dess närvaro gör att WordPress inte laddar plugins.

Som i fallet med registreringssidan återstår bara att korrigera layouten vid behov. Du kan också ändra texten för visade meddelanden (i det här fallet, glöm inte att lägga till textdomänen för dina MU -plugins till alla översättarfunktioner, som standard är den inte installerad någonstans).

Den färdiga funktionen kan användas på en i förväg skapad sida via en kortnummer eller en separat mall i ett barns tema.

Aktiveringsmeddelanden med rätt länkar

Aktiveringssidan är redo att gå, men WordPress vet inte om det och kommer fortfarande att skicka aktiveringsmeddelanden med en länk till wp-active.php. Till skillnad från wp-signup.php finns det inget filter här som gör att du kan ändra adressen. Istället måste du skriva din egen funktion som skickar e -postmeddelanden med rätt länkar.

När du fyller i och skickar formuläret på sidan WordPress -registrering samtal wpmu_signup_ användare() eller wpmu_signup_ blogg() beroende på typ av registrering. Båda funktionerna skapar nytt inlägg i tabellen wp_signups och fyller det med nödvändigt innehåll, bland vilket det finns en kontoaktiveringsnyckel.

Beroende på funktion kallas sedan wpmu_signup_ användare _notification () eller wpmu_signup_ blogg _meddelande (). Båda funktionerna har liknande funktioner - de genererar och skickar ett e -postmeddelande med en aktiveringslänk, men accepterar olika argument. Båda har filter för att "avlyssna" händelsen.

Om (! Apply_filters ("wpmu_signup_user_notification", $ user, $ user_email, $ key, $ meta)) returnerar false;

Så här aktiverar du konton med skapandet av en blogg:

If (! Apply_filters ("wpmu_signup_blog_notification", $ domain, $ path, $ title, $ user, $ user_email, $ key, $ meta)) (return false;)

Det återstår bara att skriva dina egna hanterare, inuti vilka skicka e -postmeddelanden via wp_mail (), och i slutet, se till att ge falskt så att WordPress inte skickar ett aktiveringsmejl två gånger - det ena är ditt, det andra är standard e-post med en länk till wp-active.php.

Funktion selena_network_wpmu_signup_user_notification ($ user, $ user_email, $ key, $ meta = array ()) (// Generera e -postens rubrik, text och rubriker // ... // Skicka e -postmeddelandet eller lägg till en Cron -uppgift för att skicka e -post wp_mail ($ user_email, wp_specialchars_decode ($ subject), $ message, $ message_headers); // Skicka falskt så att WordPress inte skickar aktiveringsmeddelandet två gånger return falskt;) add_filter ("wpmu_signup_user_notification", "selena_network_wpmu_signup_user_notification" 4);

Om du skickar e -post via en SMTP -server eller om antalet registreringar är mycket högt bör du överväga att inte skicka e -post direkt. Istället kan du lägga till Cron -uppgifter med WordPress Cron.

Stänger åtkomst till wp-signup.php och wp-active.php

När du har skapat dina egna registrerings- och aktiveringssidor kan du behöva stänga "originalen". Till exempel om det finns ytterligare fält på registreringssidan som måste fyllas i. Många WordPress -webbplatser är också föremål för skräppostregistreringar.

För att lösa två problem i ett steg kan du be Apache att returnera 404 om du försöker öppna dessa sidor. För att göra detta behöver du bara registrera ett par ytterligare RewriteRule i din konfigurationsfil eller .htaccess.

RewriteEngine On RewriteBase / # Att känna till reguljära uttryck kommer aldrig att vara överflödigt :) RewriteRule ^ wp -signup \ .php - RewriteRule ^ wp -active \ .php - # BEGIN WordPress # Rör inte vid standard WordPress -reglerna :) # ... # END WordPress

Slutsats

Det finns många lösningar för detta och många andra WordPress-relaterade "problem" på Internet. Till exempel, för att skapa registrerings- och aktiveringssidor, föreslår vissa att man skriver om originalet wp-signup.php och wp-active.php. Detta är inte värt att göra, för om du uppdaterar WordPress förlorar du alla ändringar som gjorts i filerna, och du kommer inte heller att kunna kontrollera kärnintegriteten med.

När du utvecklar något tillägg, tema eller lösning bör du ägna lite tid åt att ta tag i vad som händer i WordPress. Det finns många användbara felsökningsverktyg för detta.

P.S.

För att automatiskt tilldela nya användare olika roller kan du använda plugin -programmet Multisite User Management.

Om du har några frågor eller svårigheter under skapandet av registrerings- och aktiveringssidor efter att ha läst artikeln, lämna en kommentar så svarar vi definitivt.

27.03.2015 27.03.2015

WordPress -utvecklare. Älskar ordning i allt och förstår nya verktyg. Inspirerad av Symfony -komponentarkitekturen.

  • Vi skapar vår egen registreringssida för multisite istället för standard wp-signup.php.

    I en typisk WordPress-installation visar sidan wp-login.php filen för registrering (inloggning, lösenordsåterställning).

    • /wp-login.php - auktorisering
    • /wp-login.php?action=register - registrering
    • /wp-login.php?action=lostpassword - lösenordsåterställning

    Det finns separata villkor för multisite i wp-login.php. Så när du klickar på länken /wp-login.php?action=register på en multisite kommer WordPress att omdirigera till sidan /wp-signup.php. I många teman ser sidan inte särskilt attraktiv ut, så vi gör vår egen.

    Nätverkets huvudsakliga webbplats

    Som standard öppnar WordPress en registreringssida (wp-signup.php) på huvuddomänen (webbplatsen) i nätverket. Men man kan göra separat sida registreringar för varje webbplats i nätverket, även om de har olika teman. Vi kommer att överväga fallet när alla webbplatser i nätverket har en egen registreringssida, men samma tema används och webbplatserna skiljer sig bara åt språk. Om olika teman används måste mer kod skrivas.

    functions.php?

    Nej. Namnet på den här filen verkar nämnas i varje WordPress -artikel. I vårt fall, med tanke på att registreringsfunktionen är utformad för flera webbplatser, är det vettigt att flytta den till MU -plugins som laddas när du öppnar någon webbplats.

    Lyrisk digression

    Det är värt att notera att MU -plugins laddas tidigare än vanliga plugins och innan WordPress -kärnan är fullt laddad, så att ringa några funktioner kan leda till fatala fel i PHP. Denna "tidiga" laddning har också sina fördelar. Till exempel kan du inte hålla fast vid vissa åtgärder som utlöses innan ett tema. Ett exempel på detta är åtgärderna från Jetpack-pluginprogrammet i formen jetpack_module_loaded_related-posts (relaterade inlägg-namnet på modulen) som det är möjligt att spåra modulernas aktivitet i Jetpack. Det är omöjligt att "klamra" sig till denna åtgärd från temafilen, eftersom åtgärden redan har utlösts innan temat laddades - plugins laddas före teman. Ta en titt på den allmänna bilden av beställningen WordPress nedladdningar finns på åtgärdsreferenssidan i kodexen.

    Filordning

    MU -plugins kan innehålla valfritt antal filer och alla strukturer som verkar logiska för dig. Jag håller mig till en sådan här hierarki:

    | -mu -plugins | - | -load.php | - | - | -selena -nätverk | - | - | - | -registrering | - | - | - | - | -plugin.php | - | - | - | - | -... | - | - | - | -jetpack | - | - | - | - | -plugin.php

    Alla nödvändiga "plugins" för vårt nätverk är anslutna till filen load.php:

    // Load Traslates för alla tillägg load_muplugin_textdomain ("selena_network", "/ selena-network/ languages/"); // Nätverksregistrering kräver WPMU_PLUGIN_DIR. "/selena-network/signup/plugin.php"; // Ytterligare plugins // kräver WPMU_PLUGIN_DIR ...

    I selenätverksmappen lagras pluginsmappar, var och en har sin egen plugin.php, som vi inkluderar i load.php. Detta ger dig flexibilitet och möjlighet att snabbt stänga av och på saker.

    Registreringssidans adress

    För att ange adressen för registreringssidan används filtret wp_signup_location. Den finns i wp-login.php-filen och ansvarar för omdirigering till wp-signup.php.

    Fall "register": if (is_multisite ()) (wp_redirect (apply_filters ("wp_signup_location", network_site_url ("wp-signup.php"))); exit;

    Låt oss lägga till vår funktion till mu-plugins / selena-network / signup / plugin.php, som returnerar adressen till registreringssidan på den aktuella webbplatsen:

    Funktion selena_network_signup_page ($ url) (return home_url (). " / Signup /";) add_filter ("wp_signup_location", "selena_network_signup_page", 99);

    selena_network är prefixet som jag använder i namnen på alla funktioner i MU -plugins på min webbplats för att undvika kollisioner, det bör ersättas med mitt eget unika prefix. Filtret har en prioritet på 99 eftersom vissa plugins som bbPress och BuddyPress kan skriva över denna URL med sina egna (MU -plugins laddas tidigare än vanliga plugins, se ovan). Observera att home_url () används istället för network_site_url () för att behålla besökaren på samma domän. Vilken URL som helst kan användas som adress.

    Skapa en sida

    Låt oss nu skapa en sida med adressen site.com/signup/ via det vanliga gränssnittet, och i tematmappen för barnet mall för vår ny sida- page-signup.php. Ett unikt ID kan användas istället för ordet "registrering".

    Inne i den nya mallen måste du ringa till funktionen selena_network_signup_main (), som visar registreringsformuläret.

    Det är värt att notera att hela processen med mallar inte krävs och istället kan du skapa din egen kortnummer, som också kallar funktionen selena_network_signup_main ().

    wp-signup.php och wp-active.php

    Låt oss nu börja skapa en funktion som visar registreringsformuläret. För att göra detta, kopiera wp-signup.php och wp-active.php-filerna från WordPress-roten till mu-plugings / selena-network / signup / (och glöm inte att ansluta dem till mu-plugins / selena-network / signup / plugin.php) ... Ytterligare manipulationer med filer är extremt svåra och tidskrävande att beskriva, så du måste göra dem själv. Jag kommer bara att beskriva vad som exakt behöver göras och publicera källfiler ditt projekt:

    1. I början av filen, ta bort alla krav, funktionsanrop och annan kod utanför funktionerna.
    2. Byt namn på alla funktioner genom att lägga till unika prefix till namnen.
    3. Slå in den nedre delen av wp-signup.php-koden i funktionen selena_network_signup_main och skriv global $ active_signup i början; ...
    4. Ersätt layouten med din egen på rätt ställen.

    Inuti wp-active.php måste du göra ungefär samma sak:

    1. Ta bort all kod utanför funktionerna, lägg in layouten i en separat funktion.
    2. Ändra layouten vid behov.

    Filen wp-active.php är ansvarig för sidan för aktivering av konto. Som med registreringssidan måste du skapa en separat mall för den, inuti vilken du kallar funktionen från filen wp-active.php.

    Vi skickar aktiveringsbrev

    Registreringssidan skickar besökaren ett e -postmeddelande med en länk för att aktivera sitt konto. Som standard görs detta med funktionen wpmu_signup_user_notification () från filen ms-functions.php. Dess funktion kan lånas för din funktion. Anledningen till att sluta använda den här funktionen är att den skickar länken för aktivering av konto från wp-active.php. Du kan "inaktivera" den här funktionen med filtret wpmu_signup_user_notification och ge falskt på det (om du inte gör det skickas aktiveringsbrevet två gånger, okej, faktiskt två olika bokstäver).

    Funktion armyofselenagomez_wpmu_signup_user_notification ($ user, $ user_email, $ key, $ meta = array ()) (// ... // Code from function wpmu_signup_user_notification () wp_mail ($ user_email, wp_specialchars_decode ($ message_headers), $), $ return false;) add_filter ("wpmu_signup_user_notification", "armyofselenagomez_wpmu_signup_user_notification", 10, 4);

    Som ett resultat ser registreringssidan i Selena -temat mycket renare och mer exakt ut.

    Slutsats

    Det finns många andra inte särskilt korrekta sätt att göra detsamma på Internet - Apache -omdirigeringar, AJAX -formulär som inte fungerar utan Java Script, etc. egen webbplats.

    Observera att du bör redigera filerna noggrant och försöka att inte avvika mycket från originalet, så att i framtiden, om WordPress ändrar wp-signup.php och wp-active.php, skulle det vara lättare att jämföra dem att hitta ändringar.

    Glöm inte att titta in källa alla funktioner som beskrivs ovan för att fullt ut förstå vad och hur som händer inuti koden.

    Bonus. Skräppostskydd

    Även de minsta WordPress -webbplatserna utsätts för frekventa skräppostregistreringar. Du kan skriva oändliga villkor för filtrering av bots, ofta mer som att försöka skapa artificiell intelligens 🙂 I fallet med en multisite hjälpte den vanliga omdirigeringen i Apache mig mycket, med vilket, när jag öppnade /wp-signup.php och /wp- acitvate.php, jag bad om 404 (jag är inte expert på Apache -konfiguration, så mina regler kanske inte är särskilt korrekta).

    RewriteEngine On RewriteBase / RewriteRule ^ wp -signup \ .php - RewriteRule ^ wp -active \ .php - # BEGIN WordPress # Rör inte WordPress -regler som standard :) # ... # END WordPress

    PS: Jag försöker beskriva så detaljerat som möjligt några saker från tredje part, för när jag började var det ibland ingen som kunde be och förklara många saker. Jag tror också att sådana små tips om andra material kommer att få någon att lära sig något nytt och utöka sitt kunskapsområde. RewriteRule -poster använder vanliga uttryck, de är inte komplicerade alls, till exempel betyder ^ -symbolen början på en rad.