Menu
Jest wolny
rejestracja
Dom  /  Instalacja i konfiguracja/ Jak stworzyć własną stronę rejestracyjną w WordPress Multisite. Formularz w swoim układzie

Jak stworzyć własną stronę rejestracyjną w WordPress Multisite. Formularz w swoim układzie

--- Wybierz magazyn --- 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) Stambuł (Stambuł, Gençturk Cad.15, Bırlik Han. K-5.d.55 # 1) Stambuł (Nişantaşı-Valikonağı cd-Şehit İsmet Armağan sk- No 3/17) Paryż (13R Villa Madrid 92200 Neuilly-sur-Seine) Republica Mołdawia, Falesti (s.Fagadau) South Kensington (ulica Bute) Adler (Quiet Lane 2, Dystrykt Kudepsta) Aktobe (ul. Aktyubinskaya 47/2) Almetyevsk (Almetyevsk, ul. Lenina) 13, biuro 306) Anapa (ul. Terskaja 88, III piętro) Astrachań (ul. Kommunisticheskaya 17, biuro 4) Atyrau (Atyrau, al. Azattyk 42, biuro 206) Berdiańsk (obwód zaporoski) Biszkek (Bishkek, al. Czuj 32B , Centrum handlowe Izumrud, biuro C-5) Blagoveshchensk (50 Let Oktyabrya ul. 15. "Amur Fair" biuro 575) Buguruslan (Krasnoznamennaya ul. 47/2) Veliky Ustyug (Veliky Ustyug, ul. Krasnaja 61, II piętro) centrum miasta) Władywostok (ul. Svetlanskaya 147 biuro 2/4) B olgograd (miasto Wołgograd, autostrada Aviatorov 15, magazyn 23) Dyurtyuli (ul. Agidel, 4. kwartał 2) Yeisk (ul. Karla-Marksa 42/1) Jekaterynburg (ul. Pervomaiskaya 56, biuro 308) Jekaterynburg (ul. Mamina-Sibiryaka 10, biuro 3) Iwanowo (prospekt Szeremietjewski, 85G, Centrum Biznesowe „Premium Plaza” 2 piętro, biuro 212) Iżewsk (Lenina 21, biuro 304. Centrum biznesowe „ Forum ” ) Izberbash (Chapaeva 4 od. 368501) Irkuck (Irkutsk, ul. Gornaya 4 (obok centrum handlowego Karamel) biuro 407) Ishimbay (Zorge, dom 18) Yoshkar-Ola (Lenin Ave. 24v, biuro 318) Kazań ( pas Odorodoroka Grivki budynek 10, stacja metra „Kozya Sloboda” również ul. 4 (przyjazd po wcześniejszym zgłoszeniu) Komsomolsk-on-Amur (ul. Shikhanova 10, biuro 1 wejście od strony Komsomolskaya od końca budynku.) Kostroma (Prospect Mira 51, biuro 15) Krasnodar (ul. Krasnaya 124 biuro 302) Krasnojarsk (Krasnojarskiy Rabochiy Ave., 120 Shopping Center „Krasnoyarye”) Lwów (Plac Soborna 12A) Machaczkała (Akushskiy 9v) Miass (30 Let VLKSM Street 85) Mińsk (Korzhenevskogo, 26) Moskwa (metro: VDNKh, ul. , budynek 4 biuro 10 6) Moskwa (Simferopolsky Boulevard) Moskwa (Glazovsky Lane 5, Wejście do łuku, drzwi na lewo od stacji metra: Smolenskaya-500m, Kropotkinskaya-1km., Park Kultury-1km.) Moskwa (m. Czechowskaja, Puszkinskaja, Twerskaja. Bulwar Strastnoy, 6, budynek 1, Delovoy Tsentr, biuro 421) Moskwa (Lobnya, ul. Mayakovskogo, 4A, TP1, 3 piętro, biuro 301) Moskwa (stacja metra Molodezhnaya, ul. Yartsevskaya, budynek 27, budynek 9 Centrum Ozdorovitelny "Cztery Elementy”) Moskwa (Krasnaya Presnya 38-45) Moskwa (g. Moskiewskie metro Taganskaya promieniowe wyjście 3, 30 metrów od stacji metra. NS. Bolshie Kamenshiki 1, 4 piętro, biuro 30) Moskwa (metro Leninsky prospekt, Vavilova 9A, budynek 6, biuro 10 B, 3 piętro) Moskwa (metro Nowosłobodskaja, Mendelejewskaja, Majakowskaja, Białoruskaja (promieniowo). Ulica Twerska 4 -Jamskaja 24 Wejście przez łuk, ZOOMAGAZIN) Moskwa (stacja metra Białoruska (obwodnica), 5 metrów od wyjścia z metra. Plac Tverskaya Zastava, 3, 3 piętro, biuro 321. W pobliżu dworca kolejowego Białoruski.) Moskwa (M. ALTUFEVO, ul. Pskowskaja) 6) Moskwa (Moskwa, ul. Radio 5, budynek 4,2 piętro, biuro 201 (wolnostojący budynek 3-kondygnacyjny)) Naberezhnye Chelny (ul. Puszkina 4 (45/05) , wejście 2, biuro 2) Naberezhnye Chelny ( Sh.Usmanova, 122 kb. 111 1 piętro) Nalczyk (Nalczyk, Kirov 292a, 2 piętro, biuro 6) Nachodka (Pogranichnaya, 6, biuro 304) Niewinnomyssk (plac 50 lat października 8A) Nieftiejugańsk ( 12 budynek osiedlowy 7) Niżniewartowsk (Niżniewartowsk, ul. Mira 31B.) Niżny Nowogród (ul. Kominterna 139, biuro 603 (Centrum biznesowe OREOL)) Niżny Nowogród (metro Gorkovskaya, ul. Kostina, 3, BC "Nowy plac", 2. piętro, biuro 239) Niżny Tagił (w pobliżu .) L. Krasnoarmeyskaya 42a, 3 piętro biuro 4) Niżny Tagil (Niżny Tagil, ul. Papanina 5, biuro 1, Kuszwa, ul. Gorniakowa 2/11) Nikołajew (ul. Ryumin 5/1) Noworosyjsk (obwód krasnodarski, Noworosyjsk, osada Cemdolina, ul. Złota Rybka, 15) Noworosyjsk (ul. Murata Akhedżaka, D. 4 ) Nowosybirsk (ul. Oktiabrska 42, biuro 601, Centrum biznesowe, wstępnie plac Lenina, kino Majakowskiego) Nowosybirsk (ul. Gogol 33/1. 20 metrów od stacji metra Marszałek Pokryszkina, centrum handlowe na Gogoli.) Nowotroick (ul. Sowieckaja, D .144 m. 26) Nowy Urengoj (dzielnica Drużba, budynek 4/3, m. 183) Norylsk (prospekt Leninsky, 47a, biuro 79) Nur-Sultan (Astana) (Beibitshilik 14, BC Marden, biuro 708) Odessa (b -p Francuskie 60 wieloprofilowe sanatorium rehabilitacyjne „SARTUS”) Oktiabrski (Mikrodzielnica 32a, budynek 6, lokal 88) Omsk (ul. św. 71 biuro 107) Perm (Sovetskaya d. 52 biuro 1) Perm (ul. Drużby, budynek 34 biuro 305) Pyt-Yakh (Mikrodzielnica 5, budynek 5) Piatigorsk (ul. 295 dywizja strzelecka i 13, budynek 2) Rostów nad Donem (Sobornyi lane 21 biuro 10 B) Salavat (ul. Lenina, budynek 3 biuro 209, 2. piętro) Samara (ul. Novo-Sadovaya 106, biuro 804, lewa winda, 8. piętro) ul. Petersburg (metro: Wasileostrowskaja, 13. linia Wyspy Wasiliewskiej, 78, biuro 182) Petersburg (metro Dostojewskaja (5 m) i metro Władimirskaja (300 m) PASAŻ WŁADIMIRSKI III piętro, wejście centralne PIERWSZA GALERIA, ul. Vladimirsky 19) Sankt Petersburg (metro Admiralteyskaya (10 metrów) metro Newski prospekt (7 min pieszo) TC „ADMIRAL” ul. Malaya Morskaya, 4/1) Sankt Petersburg (metro Sennaya, metro Sadovaya, m Spasskaya 1 minuta pieszo, Efimova 1, piętro 2, biuro 4, centrum biznesowe „Sennaya 4”, wejście na lewo od kawiarni „Sever”) Saratów (ul. Bolshaya Gornaya, 359V, biuro nr 3) Sewastopol (ul. Ochakovtsev 19 , centrum "Plaza", parter, biuro 29/2) Snieżyńsk (ul.Zababachina 19 a) Soczi (Soczi ko. Donskaya dom 15.) Soczi (ul. Sovetskaya 42 biuro 204) Stawropol (ul. Lomonosov 21 biuro 18) Sterlitamak ( 85 Chudayberdin, III piętro) Surgut (30 lat Pobiedy, 64) Tobolsk (Tobolsk, 6 dzielnica, dom 11, biuro 39 (wejście od prospektu Komsomolskiego)) Togliatti (40 lat Pobiedy, 50, biuro 212a, TD Raduga I piętro) Tomsk (Tomsk, ul. Sowieckaja 84) Tujmazy (ul. Michurina, biuro 15 2) Tiumeń (ul. Herzen, biuro 214) Uljanowsk (ul. Ryabikova, bud. 73) Ust-Kamenogorsk (ul. Gorkiego 57, biuro 213) Ufa (plac Verhnetorgova, 6 (Centrum biznesowe NESTEROV)) Chabarowsk (ul. Postysheva, 16 ofi s 108) Chanty-Mansyjsk (G. Chanty-Mansyjsk, ul. Karol Marks 15, II piętro.) Czelabińsk (Prospect Pobiedy 168, III piętro, biuro 36.) Czerkiesk (ul. Lenina 101) Czyta (ul. Babuszkina 104, biuro 425) Czyszmy (Kołcewaja 17) Czyszmy (al. Drużby , 1B ) Szwajcaria (Arosio przez Terra Sotto, 1 6939) Szymkent (ul. Kołchoznaja 47) Jużnosachalińsk (droga Angarsky 21) Jakuck (ul. Dzierżyński 8/3b) Jakuck (Jakuck) Jałta (Wał Lenina, 5a, SEC "Fontanna, IV piętro) Yanaul (ul. Sowietskaja, 23, biuro N 8, budynek Beryozka) Jarosław (57 ShowRum) Jarosław (ul. Czkalowa, 2) Birsk Baszkirii ()?>

APOTEOZA APOTEOZA (z greckiego apoteoza - przebóstwienie), 1) w Grecji hellenistycznej i starożytnym Rzymie przebóstwienie męża stanu, bohatera, cesarza, nabycie przez niego boskiej istoty. W okresie renesansu nazwę zjawiska przeniesiono na jego obraz w malarstwie, teatrze. We współczesnym sensie apoteoza jest sceną gloryfikacji bohatera, spektakularnym „żywym obrazem”, który plastycznie wyraża główną ideę spektaklu, kończącą przedstawienie muzyczne lub dramatyczne. Forma apoteozy (a także przedstawienia panegirycznego, będącego niejako apoteozą rozwiniętą w czasie) wykształciła się w teatrach zachodnioeuropejskich i rosyjskim teatrze dworskim XVI-XVIII wieku; rozwijał się także w teatrze epok rewolucyjnych – we Francji pod koniec XVIII wieku, w Rosji po rewolucji październikowej. 2) W szerokim znaczeniu - gloryfikacja, wywyższenie osoby, wydarzenia, zjawiska.

Współczesna encyklopedia. 2000 .

Synonimy:

Zobacz, co „APOFEOZA” znajduje się w innych słownikach:

    - (greckie od apotheum do deifikacji). 1) zaliczenie bohaterów i cesarzy rzymskich do zastępu bogów. 2) obraz przedstawiający sławną osobę w postaci pogańskiego boga. 3) uroczysty obraz kończący teatr, grać. Słownik słów obcych, ... ... Słownik wyrazów obcych języka rosyjskiego

    Cm … Słownik synonimów

    apoteoza- a m. apotheose f. 1. Czytanie zastępom bogów. Śl. 18. O apoteozie Herkules. Pełsk. Kum 2 196. Głównym pięknem sali jest plafon, namalowany na płótnie farbami olejnymi przez malarza Lemoine'a i przedstawiający herkulesowe ubóstwienie ... ... Słownik historyczny rosyjskich gallicyzmów

    Apoteoza- (z greckiego apoteoza deifikacja), 1) w hellenistycznej Grecji i starożytnym Rzymie deifikacja męża stanu, bohatera, cesarza, nabycie przez niego boskiej istoty. W okresie renesansu nazwa zjawiska została przeniesiona na jego wizerunek… Ilustrowany słownik encyklopedyczny

    - (z greckiego apoteoza - przebóstwienie), początkowo wśród starożytnych Egipcjan, a następnie wśród Greków i Rzymian uroczysty obrzęd przebóstwienia władców ze względu na ich szczególne zasługi. Apoteoza, przekształcona z czasem w kult władców, cofnęła się do…… Encyklopedia filozoficzna

    - (z greki. deifikacja apoteozy). Wielki słownik encyklopedyczny

    APOTEOZA, apoteoza, mąż. (Grecka deifikacja apoteozy). 1. Starożytny obrzęd oddawania czci boskich bohaterowi, cesarzowi (ist.). 2. Szczególnie uroczysta publiczna pochwała kogoś, która ma charakter ukoronowania jego działalności (książki)... Słownik wyjaśniający Uszakowa

    APOFEOZA, ach, mężu. 1. Gloryfikacja, wywyższenie kogoś, kogo n. (książka). 2. Uroczysta końcowa scena masowa niektórych spektakli teatralnych (specjalne). | przym. apoteoza, och, och. Słownik wyjaśniający Ożegowa. SI. Ożegow, N.Ju. Szwedowa. 1949 ... ... Słownik wyjaśniający Ożegowa

    - (z greckiego apoteoza deifikacja) w starożytności ceremonia deifikacji starożytnych greckich mężów stanu, później cesarzy rzymskich. W biznesie teatralnym apoteoza nazywana jest ostatnim uroczystym etapem masowym spektaklu lub ... ... Politologia. Słownik.

    Jean Auguste Dominique Ingres. Apoteoza Napoleona, 1853 Apoteoza, nieaktualna. apoteoza ... Wikipedia

Książki

  • Apoteoza bezpodstawności
  • Apoteoza bezpodstawności, Szestow Lew. Apoteoza bezpodstawności to chyba najsłynniejsza z książek Lwa Szestowa, a przynajmniej najbardziej skandaliczna. W nim podejmuje frontalny atak na powszechnie obowiązującą wiedzę i…

Cm … Słownik synonimów

BAINKI bez zmian. rozdz. (dziecinny). Spać. Chcesz baine? Połóż bainki. Słownik wyjaśniający Uszakowa. D.N. Uszakow. 1935 1940 ... Słownik wyjaśniający Uszakowa

Zrób / zrób bainki (kup pa). Zharg. molo Czółenko. Spać. Maksimow, 21... Duży słownik rosyjskich powiedzeń

Orzekam. potoczny O stanie snu (w mowie dzieci lub w rozmowie między dorosłymi a dziećmi). II wewn. potoczny Używany jako składnik kołysanki. Słownik wyjaśniający Efremovej. T.F. Efremowa. 2000 ... Współczesny słownik objaśniający języka rosyjskiego autorstwa Efremovej

bainki- bainki, bez zmian... Rosyjski słownik ortograficzny

bainki- bez zmian... Słownik ortografii języka rosyjskiego

Int., W funk. opowieść. = Pa pa (II znak.) ... słownik encyklopedyczny

bainki- międzynarodowy; w funkcji. opowieść. = kup przez 2) ... Słownik wielu wyrażeń

bainki- ba / atrament / i, między ... Słownik pisowni morfemicznej

Książki

  • Bainki, Tokmakova I.P.. W tej książce możesz czytać, a nawet śpiewać kołysanki dla swojego dziecka. Książka z wycięciem ...
  • Bainki (red. 2006), Irina Tokmakova. W tej książce możesz czytać, a nawet śpiewać kołysanki dla swojego dziecka. Książka z wycięciem. ISBN: 5-9524-2404-X...

Umożliwia korzystanie z jednej instalacji WordPressa dla wielu witryn jednocześnie. Dodatkowo każda witryna otrzymuje własne tabele w bazie danych z unikalnym prefiksem.

Tabele z danymi zarejestrowanych użytkowników są wspólne dla wszystkich witryn w sieci. To zdecydowany plus, a rejestrując się raz, można uzyskać dostęp do kilku stron. Ponadto w każdej witrynie to samo konto może mieć różne uprawnienia. Na przykład w jednej witrynie użytkownik może być redaktorem, a w innej administratorem.

W typowej instalacji Strona WordPress rejestracja, autoryzacja i resetowanie hasła wyświetla plik wp-login.php.

  • wp-login.php - autoryzacja
  • wp-login.php?akcja = rejestracja - rejestracja
  • wp-login.php?action = lostpassword - resetowanie hasła

W trybie Multisite rdzeń WordPressa zaczyna zachowywać się nieco inaczej, a po kliknięciu linku wp-login.php?Action = register, nastąpi przekierowanie do wp-signup.php. To jest strona rejestracji Twojej sieci, którą WordPress ma domyślnie.

Oprócz rejestracji zwykłych kont użytkowników, możesz utworzyć na nim nową stronę internetową, jeśli superadministrator włączył tę funkcję w ustawieniach sieci (Administrator sieci → Ustawienia → Ustawienia sieci).

W większości motywów strona rejestracyjna nie wygląda zbyt dobrze. Wiele skórek używa frameworków CSS, takich jak Bootstrap i ich własnych klas do stylizowania różnych elementów na stronach, więc trudno jest napisać pojedynczy HTML, który działa dla wszystkich.

Ale nie rozpaczaj, jeśli strona wygląda na nieporządną. Plik wp-signup.php jest świetny na początku, gdy nie masz czasu na przepracowanie każdego szczegółu witryny - możesz skupić się na innych ważniejszych stronach i treści.

Kiedy będziesz gotowy do stworzenia własnej strony rejestracji, wp-signup.php będzie dobrym przykładem i przykładem, który pomoże Ci zrozumieć zakres funkcji, które WordPress zapewnia do obsługi i walidacji danych wprowadzanych przez użytkownika oraz tworzenia nowych kont.

Strona główna sieci

Domyślnie WordPress otwiera stronę rejestracji (wp-signup.php) w ​​głównej domenie (witrynie) sieci. Możesz jednak utworzyć strony rejestracji dla każdej witryny w sieci, nawet jeśli mają motyw.

Rozważymy przypadek, w którym wszystkie witryny w sieci używają tego samego motywu, ale każda z nich ma stronę rejestracyjną. Witryny różnią się językiem (angielskim i rosyjskim), dlatego strona rejestracji będzie wyświetlana w „ojczystym” języku witryny. Jeśli strony używają różnych motywów, wszystko będzie zależeć od tego, jakiego rodzaju są motywami, czy ten sam układ im odpowiada (doskonała sytuacja, która może popchnąć Cię do ujednolicenia wszystkich motywów), czy też warto opracowywać strony indywidualnie.

Alternatywa dla functions.php

Kolejność plików

Wtyczki MU mogą zawierać dowolną liczbę plików i struktur, które wydają się logiczne. Trzymam się czegoś takiego jak ta hierarchia:

| mu-wtyczki | | load.php | | selena-sieć | | | rejestracja | | | | plugin.php | | | ... | | | plecak odrzutowy | | | | plugin.php

Plik load.php zawiera tłumaczenia i wszystkie niezbędne "wtyczki":

// Załaduj tłumaczenia dla wtyczek MU load_muplugin_textdomain („selena_network”, „/ selena-network / języki /”); // Funkcjonalność strony rejestracji wymaga WPMU_PLUGIN_DIR. "/selena-network/signup/plugin.php"; // Kolejna wtyczka // wymaga WPMU_PLUGIN_DIR ...

Katalog selena-network zawiera foldery wtyczek. Każdy ma swój własny plugin.php, który dołączamy do load.php. Daje to elastyczność i możliwość natychmiastowego wyłączenia i włączenia poszczególnych komponentów w działającym projekcie w przypadku awarii.

Strona rejestracji

Po ustaleniu, gdzie i jak napiszemy kod, możemy przystąpić do tworzenia strony rejestracyjnej.

Stwórzmy stronę o adresie example.org/signup/ przez zwykły interfejs. Jako adres możesz użyć dowolnego adresu URL, który wydaje się odpowiedni dla Twojego projektu.

Przekieruj na wymaganą stronę rejestracji

Aby WordPress wiedział o naszej nowej stronie rejestracji i przekierowywał na nią, po kliknięciu linku „Zarejestruj się”, używany jest filtr wp_signup_location. Można go znaleźć w wp-login.php i odpowiada za domyślne przekierowanie do wp-signup.php.

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

Jak pamiętasz, domyślnie strona rejestracji otwiera się na głównej domenie sieci. Dlatego właśnie tutaj użyto network_site_url().

Dodajmy nasz handler do filtra w mu-plugins / selena-network / signup / plugin.php, który zwróci adres strony rejestracji w bieżącej witrynie:

Funkcja selena_network_signup_page ($ url) (powrót home_url ("signup");) add_filter ("wp_signup_location", "selena_network_signup_page", 99);

selena_network to prefiks, którego używam w nazwach wszystkich funkcji we wtyczkach MU na mojej stronie, aby uniknąć kolizji, należy go zastąpić moim własnym unikalnym prefiksem. Filtr ma priorytet 99, ponieważ niektóre wtyczki, takie jak bbPress i BuddyPress, mogą nadpisywać ten adres URL własnymi (wtyczki MU ładują się wcześniej niż zwykłe wtyczki, patrz wyżej).

Zauważ, że używany jest home_url(), który w przeciwieństwie do network_site_url() zwraca adres bieżącej witryny, a nie głównej witryny sieci.

Funkcjonalność wp-signup.php

Plik wp-signup.php zawiera wiele funkcji i kodu. Aby zobaczyć pełny obraz, możesz użyć składania kodu. Jest to zwykle nazywane „zwijaniem kodu” w języku angielskim.

Na samym początku pliku tworzonych jest od 1 do 80 wierszy (w wersji 4.1.1) różne kontrole i wyświetlanie "początku" strony za pomocą get_header().

Następnie deklarowanych jest wiele metod i zanim zaczniemy z nimi pracować, warto zrozumieć, co robi każda funkcja. Wiele z nich często używa innych funkcji z prefiksem wpmu_ w środku, z których wszystkie są zadeklarowane w pliku wp-includes / ms-functions.php. Ta sekcja jest trudna do zrozumienia bez samodzielnego zapoznania się z kodem. Poniżej znajduje się krótki opis głównych funkcji na wypadek problemów.

  • wpmu_signup_stylesheet () — wyświetla dodatkowy kod CSS na stronie rejestracji.
  • show_blog_form() - pola do rejestracji serwisu (adres, nazwa, widoczność dla wyszukiwarek).
  • validate_blog_form () - sprawdź wprowadzony adres i nazwę strony za pomocą wpmu_validate_blog_signup ().
  • show_user_form() - pola do rejestracji użytkownika (login i adres e-mail).
  • validate_user_form() - walidacja wprowadzonego loginu i adresu e-mail. poczta przy użyciu wpmu_validate_user_signup ().
  • signup_another_blog () - pola do rejestracji nowych witryn za pomocą show_blog_form () dla użytkowników, którzy są już zarejestrowani w serwisie.
  • validate_another_blog_signup () - weryfikuje adres URL i tytuł witryny za pomocą validate_blog_form ().
  • signup_user () to główna funkcja do wyświetlania pól strony rejestracji.
  • validate_user_signup () - weryfikuje nazwę użytkownika i adres e-mail. poczta przy użyciu validate_user_form ().
  • signup_blog () - pola do wpisania adresu, nazwy i widoczności strony (drugi krok rejestracji) za pomocą show_blog_form ().
  • validate_blog_signup () - waliduje login, adres e-mail. poczta, adres i nazwa strony.

Na samym dole pliku wp-signup.php (od linii 646 w wersji 4.1.1), główna logika strony rejestracji, która wykorzystuje wszystkie opisane powyżej metody. Ta część kodu nie jest przenoszona do funkcji. Na końcu wywoływana jest funkcja get_footer().

Skopiuj funkcjonalność wp-signup.php

Następnie opiszemy procedurę kopiowania wp-signup.php do wtyczek MU i wprowadzania zmian w „forku”. Może to nie wydaje się najlepsze właściwy sposób... Zamiast tego możesz napisać własną walidację formularzy i wyświetlać funkcje od podstaw za pomocą klas, a nie zwykłych funkcji. Moim zdaniem wp-signup.php ma już całą niezbędną logikę dla naszej strony, pozostaje tylko dokonać drobnych zmian.

Kiedy aktualizujesz WordPress, wp-signup.php zmienia się od czasu do czasu, ale to nie znaczy, że przy każdym wydaniu będziesz musiał synchronizować swój widelec. Funkcje wewnątrz wp-signup.php są zasadniczo zaangażowane tylko w wyjście HTML, walidację danych, tworzenie kont i witryn, metody z prefiksem wpmu_, zadeklarowane w ms-functions.php.

Zacznijmy tworzyć funkcję, która wyświetli formularz rejestracyjny na stronie. Aby to zrobić, skopiuj wp-signup.php z roota WordPressa do mu-plugings / selena-network / signup /. Podłączmy go w mu-plugins / selena-network / signup / plugin.php).

Wymagaj WPMU_PLUGIN_DIR. "/selena-network/signup/wp-signup.php";

Usuńmy wszystkie wymagane i niepotrzebne sprawdzenia od samego początku kopiowanego pliku. W wersji 4.1.1 jest to cały kod od 1 do 80 linii.

Jesteśmy teraz gotowi do stworzenia głównej funkcji wyświetlania formularza rejestracyjnego. Aby to zrobić, przenieś całą logikę z wiersza 646 na sam koniec pliku do funkcji o nazwie selena_network_signup_main. Na samym końcu usuniemy dwa dodatkowe zamknięcia

(linie 722 i 723), a także wywołanie get_footer ().

W nowo utworzonej selena_network_signup_main() na samym początku deklarujemy zmienną globalną active_signup, z której korzystają wszystkie inne metody z tego pliku. I dodajmy wywołanie do zdarzenia before_signup_form, które usunęliśmy od samego początku pliku.

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

Teraz pozostaje tylko zmienić layout we wszystkich miejscach, w których jest to konieczne i strona rejestracyjna jest gotowa.

Wyjście formularza rejestracyjnego

Są tu co najmniej dwie opcje. Więcej wygodnym sposobem- utwórz krótki kod i umieść go na stronie za pomocą zwykłego edytora.

// Utwórz krótki kod network_signup add_shortcode ("network_signup", "selena_network_signup_main");

Drugą opcją jest utworzenie szablonu strony page-signup.php w folderze motywu potomnego. Zamiast słowa „zarejestruj się” możesz użyć unikalnego identyfikatora przypisanego do strony. Wewnątrz szablonu dodaj wymagany układ i wywołaj selena_network_signup_main() we właściwym miejscu.

Dzięki temu moja strona rejestracyjna wygląda znacznie lepiej i czyściej.

Strona aktywacji

Za pomocą domyślny WordPress umownie dzieli proces rejestracji w Multisite na dwa etapy – wypełnienie formularza w serwisie i aktywację konta po kliknięciu w link przesłany do e-mail... Po wypełnieniu formularza utworzonego w poprzedniej sekcji, WordPress wyśle ​​e-mail z małą instrukcją i linkiem do aktywacji konta.

Za wyświetlenie strony aktywacji odpowiedzialny jest plik wp-activate.php znajdujący się w głównym katalogu WordPressa. wp-activate.php można również całkowicie zmienić. Proces jest podobny do tego, co już zrobiliśmy dla wp-signup.php.

Stwórzmy stronę example.org/activate/ za pomocą zwykłego interfejsu. Użyj dowolnego adresu URL, który uznasz za odpowiedni dla adresu.

Skopiujmy plik wp-activate.php do naszych wtyczek MU i podłączmy go do mu-plugins / selena-network / signup / plugin.php.

Wymagaj WPMU_PLUGIN_DIR. "/selena-network/signup/wp-activate.php";

Wewnątrz nie ma zbyt wiele treści, w przeciwieństwie do wp-signup.php. Plik wykonuje jedyną operację - aktywuje konto w przypadku otrzymania poprawnego klucza i wyświetla komunikat o błędzie lub pomyślne zakończenie operacji.

Usuńmy wszystkie niepotrzebne kontrole i wymagajmy - od 1 do 69 wierszy w WordPressie 4.1.1. Na samym końcu usuńmy wywołanie get_footer(). Przenieś resztę treści do funkcji selena_network_activate_main().

Warto zauważyć, że stała WP_INSTALLING została zadeklarowana tutaj przed załadowaniem WordPressa (wp-load.php). Jego obecność sprawia, że ​​WordPress nie ładuje wtyczek.

Podobnie jak w przypadku strony rejestracyjnej, pozostaje tylko poprawić układ w razie potrzeby. Możesz także zmienić tekst wyświetlanych wiadomości (w tym przypadku nie zapomnij dodać domeny tekstowej swoich wtyczek MU do wszystkich funkcji translatora, domyślnie nie jest ona nigdzie zainstalowana).

Gotową funkcję można wykorzystać na gotowej stronie za pomocą skróconego kodu lub osobnego szablonu w motywie potomnym.

E-maile aktywacyjne z poprawnymi linkami

Strona aktywacyjna jest gotowa do uruchomienia, ale WordPress nie wie o tym i nadal będzie wysyłać e-maile aktywacyjne z linkiem do wp-activate.php. W przeciwieństwie do wp-signup.php, nie ma tu filtra, który pozwalałby na zmianę adresu. Zamiast tego musisz napisać własną funkcję, która będzie wysyłać e-maile z poprawnymi linkami.

W momencie wypełniania i przesyłania formularza na stronie Rejestracja WordPress dzwoni wpmu_signup_ użytkownik() lub wpmu_signup_ blog() w zależności od rodzaju rejestracji. Obie funkcje tworzą nowe wejście w tabeli wp_signups, wypełniając ją niezbędną treścią, wśród której znajduje się klucz aktywacyjny konta.

Następnie, w zależności od funkcji, wywoływana jest funkcja wpmu_signup_ użytkownik _powiadomienie () lub wpmu_signup_ blog _notyfikacja (). Obie funkcje mają podobną funkcjonalność - generują i wysyłają e-mail z linkiem aktywacyjnym, ale akceptują różne argumenty. Oba mają filtry do „przechwytywania” zdarzenia.

Jeśli (! Apply_filters ("wpmu_signup_user_notification", $ user, $ user_email, $ key, $ meta)) zwróć false;

Aby aktywować konta z utworzeniem bloga:

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

Pozostaje tylko napisać własne handlery, w których wysyłasz e-maile przez wp_mail (), a na samym końcu koniecznie podać false, aby WordPress nie wysłał e-maila aktywacyjnego dwa razy - jeden jest twój, drugi jest domyślny e-mail z linkiem do wp-activate.php.

Funkcja selena_network_wpmu_signup_user_notification ($ user, $ user_email, $ key, $ meta = array()) (// Wygeneruj nagłówek, tekst i nagłówki wiadomości e-mail // ... // Wyślij wiadomość e-mail lub dodaj zadanie Cron, aby wysłać email wp_mail ($ user_email , wp_specialchars_decode ($ temat), $ wiadomość, $ message_headers); // Wyślij false, aby zapobiec dwukrotnemu wysyłaniu wiadomości aktywacyjnej przez WordPress;) add_filter ("wpmu_signup_user_notification", "selena_network_wpmu_signup_user_notification", 10, 4) ;

Jeśli wysyłasz e-maile przez serwer SMTP lub liczba rejestracji jest bardzo wysoka, powinieneś rozważyć nie wysyłanie e-maili od razu. Zamiast tego możesz dodać zadania Cron za pomocą WordPress Cron.

Zamknięcie dostępu do wp-signup.php i wp-activate.php

Po utworzeniu własnych stron rejestracyjnych i aktywacyjnych może być konieczne zamknięcie „oryginałów”. Na przykład, jeśli na stronie rejestracji znajdują się dodatkowe pola, które należy wypełnić. Ponadto wiele witryn WordPress podlega rejestracji spamu.

Aby rozwiązać dwa problemy w jednym kroku, możesz poprosić Apache o zwrócenie 404, jeśli spróbujesz otworzyć te strony. Aby to zrobić, wystarczy zarejestrować kilka dodatkowych reguł RewriteRule w swoim pliku konfiguracyjnym lub .htaccess.

RewriteEngine On RewriteBase / # Znajomość wyrażeń regularnych nigdy nie będzie zbyteczna :) RewriteRule ^wp-signup\.php - RewriteRule ^wp-activate\.php - # POCZĄTEK WordPress # Nie dotykaj domyślnych reguł WordPressa :) # ... # KONIEC WordPress

Wniosek

Istnieje wiele rozwiązań tego i wielu innych „problemów” związanych z WordPressem w Internecie. Na przykład, aby utworzyć strony rejestracji i aktywacji, niektórzy sugerują przepisanie oryginalnego wp-signup.php i wp-activate.php. Nie warto tego robić, ponieważ jeśli zaktualizujesz WordPress, stracisz wszystkie zmiany wprowadzone w plikach, a także nie będziesz mógł sprawdzić integralności rdzenia.

Opracowując dowolny dodatek, motyw lub rozwiązanie, powinieneś poświęcić trochę czasu, aby dowiedzieć się, co dzieje się w WordPressie. Istnieje wiele przydatnych narzędzi do debugowania.

PS

Aby automatycznie przypisać różne role nowym użytkownikom, możesz użyć wtyczki Multisite User Management.

Jeśli po przeczytaniu artykułu masz jakieś pytania lub trudności podczas tworzenia stron rejestracyjnych i aktywacyjnych, zostaw komentarz, a na pewno odpowiemy.

27.03.2015 27.03.2015

Programista WordPress. Kocha porządek we wszystkim i rozumie nowe instrumenty. Zainspirowany architekturą komponentów Symfony.

  • Tworzymy własną stronę rejestracyjną dla multisite zamiast standardowego wp-signup.php.

    W typowej instalacji WordPressa strona rejestracji (logowanie, resetowanie hasła) wyświetla plik wp-login.php.

    • /wp-login.php - autoryzacja
    • /wp-login.php?action=register - rejestracja
    • /wp-login.php?action=lostpassword - zresetuj hasło

    W wp-login.php istnieją osobne warunki dla wielu witryn. Tak więc, gdy klikniesz link /wp-login.php?action=register w wielu witrynach, WordPress przekieruje do strony /wp-signup.php. W wielu motywach strona nie wygląda zbyt atrakcyjnie, więc stworzymy własną.

    Strona główna sieci

    Domyślnie WordPress otwiera stronę rejestracji (wp-signup.php) w ​​głównej domenie (witrynie) sieci. Można jednak zrobić oddzielna strona rejestracje dla każdej witryny w sieci, nawet jeśli mają różne motywy. Rozważymy przypadek, w którym wszystkie witryny w sieci mają własną stronę rejestracyjną, ale używany jest ten sam motyw, a witryny różnią się tylko językiem. Jeśli używasz różnych motywów, będziesz musiał napisać więcej kodu.

    funkcje.php?

    Nie. Nazwa tego pliku wydaje się być wymieniona w każdym artykule WordPress. W naszym przypadku, biorąc pod uwagę, że funkcja rejestracji jest przeznaczona dla kilku witryn, sensowne jest przeniesienie jej do wtyczek MU, które są ładowane po otwarciu dowolnej witryny.

    Dygresja liryczna

    Warto zauważyć, że wtyczki MU są ładowane wcześniej niż zwykłe wtyczki i zanim rdzeń WordPressa zostanie w pełni załadowany, więc wywoływanie niektórych funkcji może prowadzić do krytycznych błędów w PHP. To „wczesne” ładowanie ma też swoje zalety. Na przykład w dowolnym motywie nie można przylgnąć do niektórych akcji, które są uruchamiane nawet przed załadowaniem pliku functions.php z motywu. Przykładem tego są akcje z wtyczki Jetpack w postaci jetpack_module_loaded_related-posts (related-posts - nazwa modułu), za pomocą której można śledzić aktywność modułów w Jetpack. Nie można "przylgnąć" do tej akcji z pliku motywu, ponieważ akcja została już wyzwolona przed załadowaniem motywu - wtyczki są ładowane przed motywami. Spójrz na ogólny obraz zamówienia Pliki do pobrania WordPress można znaleźć na stronie Action Reference w kodzie.

    Kolejność plików

    Wtyczki MU mogą zawierać dowolną liczbę plików i dowolną strukturę, która wydaje się logiczna. Trzymam się czegoś takiego jak ta hierarchia:

    | -mu-plugins | - | -load.php | - | - | -selena-network | - | - | - | -signup | - | - | - | - | -plugin.php | - | - | - | - | -... | - | - | - | -jetpack | - | - | - | - | -plugin.php

    Wszystkie niezbędne "wtyczki" dla naszej sieci są połączone w pliku load.php:

    // Załaduj tłumaczenia dla wszystkich dodatków load_muplugin_textdomain ("selena_network", "/ selena-network / języki /"); // Rejestracja w sieci wymaga WPMU_PLUGIN_DIR. "/selena-network/signup/plugin.php"; // Kolejne wtyczki // wymagają WPMU_PLUGIN_DIR ...

    Foldery wtyczek są przechowywane w folderze selena-network, każdy ma swój własny plugin.php, który dołączamy do load.php. Daje to elastyczność i możliwość szybkiego wyłączania i włączania rzeczy.

    Adres strony rejestracji

    Aby określić adres strony rejestracji, używany jest filtr wp_signup_location. Można go znaleźć w pliku wp-login.php i odpowiada za przekierowanie do wp-signup.php.

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

    Dodajmy naszą funkcję do mu-plugins / selena-network / signup / plugin.php, która zwróci adres strony rejestracji w bieżącej witrynie:

    Funkcja selena_network_signup_page ($ url) (powrót home_url (). "/ Zarejestruj /";) add_filter ("wp_signup_location", "selena_network_signup_page", 99);

    selena_network to prefiks, którego używam w nazwach wszystkich funkcji we wtyczkach MU na mojej stronie, aby uniknąć kolizji, należy go zastąpić moim własnym unikalnym prefiksem. Filtr ma priorytet 99, ponieważ niektóre wtyczki, takie jak bbPress i BuddyPress, mogą nadpisywać ten adres URL własnymi (wtyczki MU ładują się wcześniej niż zwykłe wtyczki, patrz wyżej). Zauważ, że home_url () jest używany zamiast network_site_url (), aby utrzymać odwiedzającego w tej samej domenie. Jako adres można użyć dowolnego adresu URL.

    Utwórz stronę

    Teraz stwórzmy stronę o adresie site.com/signup/ poprzez zwykły interfejs, aw folderze motywu potomnego szablon dla naszego Nowa strona- strona-rejestracja.php. Zamiast słowa „zarejestruj się” można użyć unikalnego identyfikatora.

    Wewnątrz nowego szablonu należy wywołać funkcję selena_network_signup_main(), która wyświetli formularz rejestracyjny.

    Należy zauważyć, że cały proces z szablonami nie jest wymagany i zamiast tego można stworzyć własny shortcode, który wywoła również funkcję selena_network_signup_main().

    wp-signup.php i wp-activate.php

    Teraz zacznijmy tworzyć funkcję, która wyświetli formularz rejestracyjny. Aby to zrobić, skopiuj pliki wp-signup.php i wp-activate.php z katalogu głównego WordPressa do mu-plugings / selena-network / signup / (i nie zapomnij połączyć ich w mu-plugins / selena-network / rejestracja / plugin.php) ... Dalsze manipulacje plikami są niezwykle trudne i czasochłonne do opisania, więc będziesz musiał je wykonać samodzielnie. Opiszę tylko, co dokładnie trzeba zrobić i opublikuję pliki źródłowe Twój projekt:

    1. Na początku pliku usuń wszystkie wymagania, wywołania funkcji i inny kod poza funkcjami.
    2. Zmień nazwy wszystkich funkcji, dodając do nazw unikalne przedrostki.
    3. Zawiń dolną część kodu wp-signup.php w funkcję selena_network_signup_main i na samym początku napisz globalny $ active_signup; ...
    4. Zamień układ na własny w odpowiednich miejscach.

    Wewnątrz wp-activate.php musisz zrobić mniej więcej to samo:

    1. Usuń cały kod poza funkcjami, opakuj układ w osobną funkcję.
    2. W razie potrzeby zmień układ.

    Za stronę aktywacji konta odpowiada plik wp-activate.php. Podobnie jak w przypadku strony rejestracji, musisz stworzyć dla niej osobny szablon, wewnątrz którego wywołasz funkcję z pliku wp-activate.php.

    Wysyłamy listy aktywacyjne

    Strona rejestracji wysyła odwiedzającemu wiadomość e-mail z linkiem do aktywacji konta. Domyślnie robi to funkcja wpmu_signup_user_notification() z pliku ms-functions.php. Jego funkcjonalność można wypożyczyć na swoją funkcję. Powodem, dla którego przestajesz korzystać z tej funkcji, jest to, że wysyła ona link aktywacyjny konta z wp-activate.php. Możesz "wyłączyć" tę funkcję za pomocą filtru wpmu_signup_user_notification, podając na niej fałsz (jeśli tego nie zrobisz, list aktywacyjny zostanie wysłany dwukrotnie, ok, w rzeczywistości dwie różne litery).

    Funkcja armyofselenagomez_wpmu_signup_user_notification ($ user, $ user_email, $ key, $ meta = array()) (// ... // Kod z funkcji wpmu_signup_user_notification () wp_mail ($ user_email, wp_specialchars_decode ($ message_headers), $ wiadomość), $ ; return false;) add_filter („wpmu_signup_user_notification”, „armyofselenagomez_wpmu_signup_user_notification”, 10, 4);

    Dzięki temu strona rejestracji w motywie Selena wygląda na znacznie czystszą i dokładniejszą.

    Wniosek

    Istnieje wiele innych niezbyt poprawnych sposobów robienia tego samego w Internecie - przekierowania Apache, formularze AJAX, które nie będą działać bez Java Script, itp. własna strona internetowa.

    Pamiętaj, że powinieneś ostrożnie edytować pliki i starać się nie odbiegać zbytnio od oryginału, aby w przyszłości, jeśli WordPress zmieni pliki wp-signup.php i wp-activate.php, łatwiej będzie je porównać, aby znaleźć zmiany.

    Nie zapomnij zajrzeć do środka źródło wszystkie funkcje opisane powyżej, aby w pełni zrozumieć, co i jak dzieje się w kodzie.

    Premia. Ochrona przed spamerami

    Nawet najmniejsze witryny WordPress podlegają częstym rejestracjom spamu. Można pisać nieskończone warunki filtrowania botów, często bardziej przypominające próbę stworzenia sztucznej inteligencji 🙂 W przypadku multisite’u bardzo pomogło mi zwyczajne przekierowanie w Apache, z czym przy otwieraniu /wp-signup.php i /wp- acitvate.php, poprosiłem o 404 (nie jestem ekspertem od konfiguracji Apache, więc moje reguły mogą nie być zbyt poprawne).

    RewriteEngine On RewriteBase/RewriteRule^wp-signup\.php - RewriteRule^wp-activate\.php - # POCZĄTEK WordPress # Nie dotykaj domyślnie reguł WordPressa :) # ... # KONIEC WordPress

    P. S. Staram się opisywać jak najdokładniej niektóre rzeczy osób trzecich, ponieważ kiedy zaczynałem, czasami nie było komu podpowiadać i wyjaśniać wiele rzeczy. Wierzę też, że takie drobne wskazówki dotyczące innych materiałów popchną kogoś do nauczenia się czegoś nowego i poszerzenia zakresu wiedzy. Użyj wpisów RewriteRule wyrażenia regularne, nie są one wcale skomplikowane, np. znak ^ oznacza początek wiersza.