Kako stvoriti vlastitu stranicu za registraciju u WordPress Multisite. Statičke podatke premještamo na zaseban poslužitelj i povezujemo CDN

Omogućuje korištenje jedne WordPress instalacije za više web stranica u isto vrijeme. U tom slučaju svaka stranica dobiva vlastite tablice u bazi podataka s jedinstvenim prefiksom.

Tablice s podacima registriranih korisnika zajedničke su svim stranicama na mreži. Ovo je definitivan plus i jednom registracijom možete dobiti pristup na nekoliko stranica. Štoviše, na svakoj stranici isti račun može imati različita prava. Na primjer, na jednom mjestu korisnik može biti urednik, a na drugom administrator.

U tipičnoj WordPress instalaciji, stranicu za registraciju, prijavu i poništavanje lozinke ispisuje datoteka wp-login.php.

  • wp-login.php - autorizacija
  • wp-login.php?action=register - registracija
  • wp-login.php?action=lostpassword - ponovno postavljanje lozinke

U Multisite modu, jezgra WordPressa počinje se ponašati nešto drugačije i kada slijedite vezu wp-login.php?action=register, doći će do preusmjeravanja na wp-signup.php. Ovo je stranica za registraciju vaše mreže koja prema zadanim postavkama dolazi s WordPressom.

Osim registracije običnih korisničkih računa, na njemu možete izraditi i novu web stranicu ako je super administrator omogućio tu značajku u postavkama mreže (Administrator mreže → Postavke → Postavke mreže).

U većini tema stranica za registraciju ne izgleda baš dobro. Mnoge teme koriste CSS okvire kao što je Bootstrap i vlastite prilagođene klase za stiliziranje različitih elemenata na stranicama, tako da je teško napisati jedan HTML koji odgovara svima.

Ali nemojte očajavati ako stranica izgleda neuredno. Datoteka wp-signup.php je izvrsna stvar na početku, kada nemate vremena raditi kroz svaki detalj stranice - možete se usredotočiti na druge važnije stranice i sadržaj.

Kada budete spremni napraviti vlastitu stranicu za prijavu, wp-signup.php je dobar primjer koji će vam pomoći da razumijete niz značajki koje WordPress nudi za obradu i provjeru valjanosti unosa korisnika i stvaranje novih računa.

Glavno mjesto mreže

Prema zadanim postavkama, WordPress otvara stranicu za registraciju (wp-signup.php) na glavnoj domeni (stranici) mreže. Međutim, možete stvoriti stranice za registraciju za svako mjesto u vašoj mreži, čak i ako ima teme.

Razmotrit ćemo slučaj kada sve stranice u mreži koriste istu temu, ali svaka od njih ima stranicu za registraciju. Stranice se razlikuju po jeziku (engleski i ruski), tako da će stranica za registraciju biti prikazana na "materinjem" jeziku stranice. Ako stranice koriste različite teme, sve će ovisiti o tome koje su teme, hoće li im odgovarati isti izgled (izvrsna situacija koja vas može potaknuti da objedinite sve svoje teme) ili se isplati razvijati stranice pojedinačno.

Alternativa za functions.php

Redoslijed datoteka

MU dodaci mogu sadržavati bilo koji broj datoteka i strukturu koja vam se čini logičnom. Držim se ove hijerarhije:

| mu-dodaci | | load.php | | selena-mreža | | | prijava | | | | dodatak.php | | | ... | | | mlazni ruksak | | | | dodatak.php

Datoteka load.php uključuje prijevode i sve potrebne "dodatke":

// Učitavanje prijevoda za MU dodatke load_muplugin_textdomain("selena_network", "/selena-network/languages/"); // Funkcionalnost stranice za registraciju zahtijeva WPMU_PLUGIN_DIR. "/selena-network/signup/plugin.php"; // Drugi dodatak // zahtijeva WPMU_PLUGIN_DIR ...

Mape dodataka pohranjene su unutar direktorija selena-network. Svaki ima svoj plugin.php, koji uključujemo u load.php. To vam daje fleksibilnost i mogućnost trenutnog isključivanja i uključivanja pojedinačnih komponenti na radnom projektu u slučaju nužde.

Stranica za registraciju

Nakon što smo shvatili gdje i kako ćemo napisati kod, možemo prijeći na izradu stranice za registraciju.

Kreirajmo stranicu s adresom example.org/signup/ kroz normalno sučelje. Možete koristiti bilo koji URL koji se čini prikladnim za vaš projekt.

Preusmjerite na željenu stranicu za registraciju

Kako bi WordPress saznao za našu novu stranicu za registraciju i preusmjerio točno na nju, kada kliknete na poveznicu "Registracija", koristi se filter wp_signup_location. Može se pronaći unutar wp-login.php i odgovoran je za preusmjeravanje na wp-signup.php prema zadanim postavkama.

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

Kao što se sjećate, prema zadanim postavkama stranica za registraciju otvara se na glavnoj domeni mreže. Zbog toga se ovdje koristi network_site_url().

Dodajmo naš rukovatelj filtru u mu-plugins/selena-network/signup/plugin.php, koji će vratiti adresu stranice za registraciju na trenutnoj stranici:

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

selena_network je prefiks koji koristim u imenima svih funkcija unutar MU dodataka na svojoj stranici kako bih izbjegao kolizije, trebao bi se zamijeniti vašim vlastitim jedinstvenim prefiksom. Prioritet dodavanja filtra je 99, jer neki dodaci, na primjer, bbPress i BuddyPress mogu prebrisati ovu adresu svojom (MU dodaci se učitavaju ranije od običnih dodataka, vidi gore).

Imajte na umu da se koristi home_url() koji, za razliku od network_site_url(), vraća adresu trenutne stranice, a ne glavne stranice mreže.

Funkcionalnost wp-signup.php

Datoteka wp-signup.php sadrži veliki broj funkcija i koda. Da biste vidjeli veliku sliku, možete upotrijebiti preklapanje koda. U pravilu, na engleskom se to zove “code folding”.

Na samom početku datoteke, od redaka 1 do 80 (u verziji 4.1.1), vrše se razne provjere i ispisuje se “početak” stranice korištenjem get_header() .

Zatim se deklariraju mnoge metode, a prije nego počnemo raditi s njima, vrijedi razumjeti što svaka funkcija radi. Mnogi od njih često koriste druge funkcije s prefiksom wpmu_, a sve su navedene u datoteci wp-includes/ms-functions.php. Ovaj je odjeljak teško razumjeti bez da sami vidite kôd. Dolje je kratak opis glavnih funkcija u slučaju da imate poteškoća.

  • wpmu_signup_stylesheet() - Ispisuje dodatni CSS na stranici za registraciju.
  • show_blog_form() - polja za registraciju stranice (adresa, naziv, vidljivost za tražilice).
  • validate_blog_form() - provjerava valjanost unesene adrese i naslova stranice pomoću wpmu_validate_blog_signup() .
  • show_user_form() - polja za registraciju korisnika (login i email adresa).
  • validate_user_form() — provjerava unesenu prijavu i adresu e-pošte. pošta koristeći wpmu_validate_user_signup() .
  • signup_another_blog() - polja za registraciju novih stranica koristeći show_blog_form() za korisnike koji su već registrirani na stranici.
  • validate_another_blog_signup() - provjerava adresu i naslov stranice pomoću validate_blog_form() .
  • signup_user() je glavna funkcija za prikaz polja stranice za registraciju.
  • validate_user_signup() - provjerava prijavu i adresu e-pošte. pošta pomoću validate_user_form() .
  • signup_blog() - polja za unos adrese, naziva i vidljivosti stranice (drugi korak registracije) pomoću show_blog_form() .
  • validate_blog_signup() - provjerava prijavu, adresu e-pošte. email, adresa i naziv web stranice.

Na samom dnu datoteke wp-signup.php (od retka 646 u verziji 4.1.1) nalazi se glavna logika stranice za registraciju, koja koristi sve gore opisane metode. Ovaj dio koda nije uključen u funkciju. Na kraju se poziva get_footer().

Kopirajte funkcionalnost wp-signup.php

Sljedeće će opisati postupak za kopiranje wp-signup.php u MU dodatke i unošenje promjena u “fork”. Ovo se možda ne čini kao najbolji način. Umjesto toga, možete napisati svoje vlastite funkcije od nule za provjeru valjanosti i prikaz obrazaca koristeći klase umjesto uobičajenih funkcija. Po mom mišljenju, wp-signup.php već ima svu potrebnu logiku za našu stranicu, preostaje samo napraviti neke male izmjene.

Kada se WordPress ažurira, wp-signup.php se također mijenja s vremena na vrijeme, ali to ne znači da ćete morati sinkronizirati svoju “fork” sa svakim izdanjem. Funkcije unutar wp-signup.php u biti se bave samo HTML izlazom, provjerom podataka, stvaranjem računa i web stranica, a uključene su i metode s prefiksom wpmu_, deklarirane u ms-functions.php.

Kreirajmo funkciju koja će prikazati obrazac za registraciju na stranici. Da biste to učinili, kopirajte wp-signup.php iz korijena WordPressa u mu-plugings/selena-network/signup/ . Povežimo ga unutar mu-plugins/selena-network/signup/plugin.php).

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

Uklonimo sve potrebne i nepotrebne provjere od samog početka kopirane datoteke. U verziji 4.1.1 ovo je sav kod od redaka 1 do 80.

Sada smo spremni za izradu glavne funkcije za prikaz obrasca za registraciju. Da bismo to učinili, prenijet ćemo svu logiku iz retka 646 do samog kraja datoteke u funkciju koja se zove selena_network_signup_main. Na samom kraju ćemo ukloniti dva dodatna zatvaranja

(linije 722 i 723), kao i poziv get_footer().

U novokreiranoj selena_network_signup_main() , na samom početku ćemo deklarirati globalnu active_signup varijablu koju koriste sve ostale metode iz ove datoteke. I dodajmo poziv u događaj before_signup_form, koji smo uklonili sa samog početka datoteke.

Funkcija selena_network_signup_main() ( globalna $active_signup; do_action("before_signup_form"); // ... )

Sada preostaje samo promijeniti izgled na svim mjestima gdje je to potrebno i stranica za registraciju je spremna.

Ispis obrasca za registraciju

Ovdje postoje najmanje dvije opcije. Prikladniji način je stvoriti kratki kod i postaviti ga na stranicu putem običnog uređivača.

// Stvorite kratki kod network_signup add_shortcode("network_signup", "selena_network_signup_main");

Druga opcija je stvaranje predloška stranice page-signup.php u mapi podređene teme. Umjesto riječi "prijava" možete koristiti jedinstveni ID dodijeljen stranici. Unutar predloška dodajte potreban izgled i pozovite selena_network_signup_main() na pravo mjesto.

Kao rezultat toga, moja stranica za registraciju izgledala je puno bolje i čistije.

Stranica za aktivaciju

Prema zadanim postavkama, WordPress dijeli proces registracije na Multisite u dva koraka - ispunjavanje obrasca na web mjestu i aktivaciju vašeg računa klikom na poveznicu poslanu u e-poruci. Nakon što ispunite obrazac kreiran u prethodnom odjeljku, WordPress šalje e-mail s kratkim uputama i poveznicom za aktivaciju vašeg računa.

Za prikaz aktivacijske stranice odgovorna je datoteka wp-activate.php koja se nalazi u korijenskom direktoriju WordPressa. wp-activate.php također se može potpuno promijeniti. Proces je sličan onome što smo već napravili za wp-signup.php.

Kreirajmo stranicu example.org/activate/ kroz normalno sučelje. Za adresu koristite bilo koji URL koji vam se čini odgovarajućim.

Kopirajmo datoteku wp-activate.php u naše MU dodatke i spojimo je na mu-plugins/selena-network/signup/plugin.php.

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

Unutra nema puno sadržaja, za razliku od wp-signup.php. Datoteka izvodi jednu operaciju - aktivira račun ako je primljen točan ključ i prikazuje poruku o pogrešci ili uspješnom završetku operacije.

Uklonimo sve nepotrebne provjere i zahtjeve - od redaka 1 do 69 u WordPressu 4.1.1. Na samom kraju ćemo ukloniti poziv get_footer(). Preostali sadržaj prenijet ćemo u funkciju selena_network_activate_main().

Zanimljivo je napomenuti da je ovdje prije učitavanja WordPress-a (wp-load.php) deklarirana konstanta WP_INSTALLING. Njegova prisutnost uzrokuje da WordPress ne učitava dodatke.

Kao iu slučaju stranice za registraciju, preostaje samo ispraviti izgled gdje je to potrebno. Također možete promijeniti tekst prikazanih poruka (u ovom slučaju, ne zaboravite dodati tekstualnu domenu vaših MU dodataka svim funkcijama prevoditelja; prema zadanim postavkama nije nigdje instaliran).

Gotova funkcija može se koristiti na unaprijed stvorenoj stranici putem kratkog koda ili zasebnog predloška u podređenoj temi.

Aktivacijska pisma s ispravnim poveznicama

Aktivacijska stranica je spremna za rad, ali WordPress ne zna za to i svejedno će slati aktivacijske e-poruke s vezom na wp-activate.php. Za razliku od wp-signup.php, ne postoji filter koji bi vam omogućio promjenu adrese. Umjesto toga, trebate napisati vlastitu funkciju koja će slati e-poštu s ispravnim vezama.

Kada ispunite i pošaljete obrazac na stranici za registraciju, WordPress poziva wpmu_signup_ korisnik() ili wpmu_signup_ blog() ovisno o vrsti registracije. Obje funkcije stvaraju novi unos u tablici wp_signups, popunjavajući je potrebnim sadržajem, što uključuje aktivacijski ključ računa.

Nakon toga, ovisno o funkciji, poziva se wpmu_signup_ korisnik _notification() ili wpmu_signup_ blog _obavijest() . Obje funkcije imaju sličnu funkcionalnost - generiraju i šalju e-poštu s vezom za aktivaciju, ali uzimaju različite argumente. Oba imaju filtre za "presretanje" događaja.

If (! apply_filters("wpmu_signup_user_notification", $user, $user_email, $key, $meta)) return false;

Za aktiviranje računa s izradom bloga:

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

Ostaje samo da napišete vlastite handlere unutar kojih šaljete pisma putem wp_mail() i na samom kraju obavezno vratite false kako WordPress ne bi dva puta poslao aktivacijsko pismo - jedno je vaše, drugo je zadano pismo s vezom na wp-activate.php .

Funkcija selena_network_wpmu_signup_user_notification($user, $user_email, $key, $meta = array()) ( // Generirajte zaglavlje, tekst i zaglavlja pisma // ... // Pošaljite pismo ili dodajte Cron zadatak za slanje pismo wp_mail($user_email, wp_specialchars_decode($subject), $message, $message_headers); // Dajte false da WordPress ne pošalje aktivacijsku e-poštu dva puta, vratite false; ;

Ako šaljete e-poštu putem SMTP poslužitelja ili je broj registracija vrlo velik, razmislite o tome da e-poštu ne šaljete odmah. Umjesto toga, možete dodati Cron zadatke koristeći WordPress Cron.

Zatvaramo pristup wp-signup.php i wp-activate.php

Nakon što izradite vlastite stranice za registraciju i aktivaciju, možda ćete htjeti zatvoriti "izvornike". Na primjer, ako na stranici za registraciju postoje dodatna polja koja je potrebno ispuniti. Također, mnoge WordPress stranice podliježu registraciji neželjene pošte.

Možete riješiti dva problema u jednoj akciji traženjem od Apachea da vrati 404 ako pokušate otvoriti ove stranice. Da biste to učinili, samo trebate dodati nekoliko dodatnih RewriteRule u vašu konfiguracijsku datoteku ili .htaccess.

RewriteEngine On RewriteBase / # Poznavanje regularnih izraza nikada neće biti suvišno :) RewriteRule ^wp-signup\.php - RewriteRule ^wp-activate\.php - # POČNITE WordPress # Standardno ne diramo WordPress pravila :) # .. . # ZAVRŠI WordPress

Zaključak

Postoje mnoga rješenja za ovaj i mnoge druge WordPress "probleme" na internetu. Na primjer, za stvaranje stranica za registraciju i aktivaciju, neki predlažu ponovno pisanje izvornih wp-signup.php i wp-activate.php. To se ne bi smjelo činiti, jer ako ažurirate WordPress, izgubit ćete sve promjene napravljene u datotekama, a također nećete moći provjeriti integritet jezgre pomoću .

Kada razvijate bilo koji dodatak, temu ili rješenje, trebali biste posvetiti malo vremena razumijevanju onoga što se događa unutar WordPressa. Za to postoje mnogi korisni alati za otklanjanje pogrešaka.

p.s.

Kako biste automatski dodijelili različite uloge novim korisnicima, možete koristiti dodatak za upravljanje korisnicima na više stranica.

Ako nakon čitanja članka imate bilo kakvih pitanja ili poteškoća tijekom izrade stranica za registraciju i aktivaciju, ostavite komentar i mi ćemo vam sigurno odgovoriti.

27.03.2015 27.03.2015

WordPress programer. Voli red u svemu i razumijevanje novih alata. Nadahnut arhitekturom komponenti Symfony.

  • Stvaramo vlastitu stranicu za registraciju za multisite umjesto standardne wp-signup.php.

    U tipičnoj instalaciji WordPressa, stranica za registraciju (prijava, poništavanje lozinke) ispisuje datoteka wp-login.php.

    • /wp-login.php - autorizacija
    • /wp-login.php?action=register - registracija
    • /wp-login.php?action=lostpassword - ponovno postavljanje lozinke

    Postoje zasebni uvjeti za multisite u wp-login.php. Dakle, kada slijedite vezu /wp-login.php?action=register na više stranica, WordPress će preusmjeriti na stranicu /wp-signup.php. Mnoge teme ne čine stranicu atraktivnom, pa ćemo izraditi vlastitu.

    Glavno mjesto mreže

    Prema zadanim postavkama, WordPress otvara stranicu za registraciju (wp-signup.php) na glavnoj domeni (stranici) mreže. Međutim, možete napraviti zasebnu stranicu za registraciju za svako mjesto u vašoj mreži, čak i ako imaju različite teme. Razmotrit ćemo slučaj kada sve stranice u mreži imaju vlastitu stranicu za registraciju, ali se koristi ista tema i stranice se razlikuju samo po jeziku. Ako koristite različite teme, morat ćete napisati više koda.

    funkcije.php?

    Ne. Čini se da se ovaj naziv datoteke spominje u svakom članku o WordPressu. U našem slučaju, s obzirom na to da je funkcionalnost registracije dizajnirana za nekoliko stranica, ima smisla uključiti je u MU dodatke koji se učitavaju kada se bilo koja stranica otvori.

    Lirska digresija

    Vrijedno je napomenuti da se MU dodaci učitavaju prije uobičajenih dodataka i prije nego što se jezgra WordPressa potpuno učita, tako da pozivanje nekih funkcija može dovesti do fatalnih pogrešaka u PHP-u. Takvo "rano" učitavanje također ima svoje prednosti. Recimo da se unutar bilo koje teme ne možete pridružiti nekim radnjama koje se pokreću čak i prije nego što se datoteka functions.php učita iz teme. Primjer za to su akcije iz Jetpack plugina oblika jetpack_module_loaded_related-posts (related-posts je naziv modula), uz pomoć kojih je moguće pratiti aktivnost modula u Jetpacku. Nemoguće je "priložiti" ovu akciju iz datoteke teme, jer je radnja već pokrenuta prije učitavanja teme - dodaci se učitavaju prije tema. Opću sliku redoslijeda učitavanja WordPressa možete pogledati na stranici Action Reference u kodeksu.

    Redoslijed datoteka

    MU dodaci mogu sadržavati bilo koji broj datoteka i bilo koju strukturu koja vam se čini logičnom. Držim se ove hijerarhije:

    |-mu-dodaci |-|-load.php |-|-|-selena-network |-|-|-|-prijava |-|-|-|-|-plugin.php |-|-|-| -|-... |-|-|-|-jetpack |-|-|-|-|-plugin.php

    Datoteka load.php sadrži sve potrebne "dodatke" za našu mrežu:

    // Učitaj prevoditelje za sve dodatke load_muplugin_textdomain ("selena_network", "/selena-network/languages/"); // Prijava na mrežu zahtijeva WPMU_PLUGIN_DIR. "/selena-network/signup/plugin.php"; // Još jedan dodatak // zahtijeva WPMU_PLUGIN_DIR ...

    Unutar mape selena-network pohranjene su mape dodataka, svaka sa svojim plugin.php, koji uključujemo u load.php. To vam daje fleksibilnost i mogućnost brzog isključivanja i uključivanja stvari.

    Adresa stranice za registraciju

    Da odredite adresu stranice za registraciju, koristite filter wp_signup_location. Može se pronaći unutar datoteke wp-login.php i odgovoran je za preusmjeravanje na wp-signup.php.

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

    Dodajmo našu funkciju u mu-plugins/selena-network/signup/plugin.php, koja će vratiti adresu stranice za registraciju na trenutnoj stranici:

    Funkcija selena_network_signup_page ($url) ( return home_url () . "/signup/"; ) add_filter ( "wp_signup_location", "selena_network_signup_page", 99);

    selena_network je prefiks koji koristim u imenima svih funkcija unutar MU dodataka na svojoj stranici kako bih izbjegao kolizije, trebao bi se zamijeniti vašim vlastitim jedinstvenim prefiksom. Prioritet dodavanja filtra je 99 jer neki dodaci, na primjer bbPress i BuddyPress, mogu prebrisati ovu adresu vlastitom (MU dodaci se učitavaju ranije od običnih dodataka, vidi gore). Imajte na umu da se home_url() koristi umjesto network_site_url() kako bi se posjetitelj zadržao na istoj domeni. Bilo koji URL može se koristiti kao adresa.

    Izrada stranice

    Kreirajmo sada stranicu s adresom site.com/prijava/ kroz normalno sučelje, au mapi podređene teme predložak za našu novu stranicu je stranica-prijava.php. Umjesto riječi "prijava" možete koristiti jedinstveni ID.

    Unutar novog predloška potrebno je pozvati funkciju selena_network_signup_main(), koja će prikazati obrazac za registraciju.

    Vrijedno je napomenuti da je cijeli postupak predloška neobavezan i umjesto toga možete stvoriti vlastiti kratki kod koji će također pozvati funkciju selena_network_signup_main().

    wp-signup.php i wp-activate.php

    Kreirajmo sada funkciju koja će prikazati obrazac za registraciju. Da biste to učinili, kopirajte datoteke wp-signup.php i wp-activate.php iz korijena WordPressa u mu-plugings/selena-network/signup/ (i ne zaboravite ih povezati unutar mu-plugins/selena-network /signup/plugin.php) . Daljnje manipulacije datotekama izuzetno je teško i dugo opisati, pa ćete ih morati učiniti sami. Samo ću opisati što točno treba učiniti i objaviti izvorne datoteke mog projekta:

    1. Na početku datoteke uklonite sve zahtjeve, pozive funkcija i drugi kod izvan funkcija.
    2. Preimenujte sve funkcije dodavanjem jedinstvenih prefiksa imenima.
    3. Zamotajte donji dio koda wp-signup.php u funkciju selena_network_signup_main i na samom početku napišite global $active_signup; .
    4. Zamijenite izgled vlastitim na pravim mjestima.

    Unutar wp-activate.php trebate učiniti približno istu stvar:

    1. Uklonite sav kod izvan funkcija, zamotajte izgled u zasebnu funkciju.
    2. Promijenite raspored na mjestima gdje je to potrebno.

    Datoteka wp-activate.php odgovorna je za stranicu za aktivaciju računa. Kao i kod stranice za registraciju, za nju morate izraditi poseban predložak unutar kojeg morate pozvati funkciju iz datoteke wp-activate.php.

    Slanje aktivacijskih pisama

    Stranica za registraciju šalje posjetitelju e-poruku s vezom za aktivaciju računa. Prema zadanim postavkama, to radi funkcija wpmu_signup_user_notification() iz datoteke ms-functions.php. Njegovu funkcionalnost možete posuditi za vlastitu funkciju. Razlog za izbjegavanje korištenja ove značajke je taj što šalje vezu za aktivaciju računa s wp-activate.php. Ovu funkciju možete "isključiti" pomoću filtra wpmu_signup_user_notification, vraćajući false (ako se to ne učini, aktivacijsko pismo će biti poslano dva puta, u redu, zapravo dva različita slova).

    Funkcija armyofselenagomez_wpmu_signup_user_notification($user, $user_email, $key, $meta = array()) ( // ... // Kod iz funkcije wpmu_signup_user_notification() wp_mail($user_email, wp_specialchars_decode($subject), $message, $message_headers) ; return false; add_filter("wpmu_signup_user_notification", "armyofselenagomez_wpmu_user_notification", 10, 4);

    Kao rezultat toga, stranica za registraciju u temi Selena počela je izgledati mnogo čistije i urednije.

    Zaključak

    Postoji mnogo drugih ne baš ispravnih načina na Internetu da se napravi ista stvar - Apache preusmjerava, AJAX obrasci koji neće raditi bez Java Scripta, itd. Nije mi se baš svidjelo sve ovo, pa sam pokušao to učiniti što korektnije moguće na vlastitoj web stranici.

    Napominjem da biste trebali pažljivo uređivati ​​datoteke i pokušati ne odstupati previše od originalnih, kako bi u budućnosti, ako WordPress promijeni datoteke wp-signup.php i wp-activate.php, bilo lakše usporediti međusobno kako bi pronašli promjene.

    Ne zaboravite pogledati izvorni kod svih gore opisanih funkcija kako biste u potpunosti razumjeli što se i kako događa unutar koda.

    Bonus. Zaštita od spamera

    Čak i najmanje WordPress stranice često su zaražene neželjenim registracijama. Možete napisati bezbroj uvjeta za filtriranje botova, često više kao pokušaj stvaranja umjetne inteligencije :) U slučaju multisite-a, puno mi je pomoglo obično preusmjeravanje u Apacheu, uz pomoć kojeg sam tražio 404 pri otvaranju / wp-signup.php i /wp-acitvate.php (Nisam stručnjak za konfiguriranje Apachea, pa moja pravila možda nisu baš točna).

    RewriteEngine On RewriteBase / RewriteRule ^wp-signup\.php - RewriteRule ^wp-activate\.php - # POČNI WordPress # Ne diramo pravila iz WordPressa prema zadanim postavkama :) # ... # KRAJ WordPress

    P.S. Pokušavam što detaljnije opisati neke stvari treće strane, jer kad sam ja počinjao, ponekad nije bilo nikoga tko bi predložio i objasnio mnoge stvari. Također vjerujem da će ovakvi mali savjeti o drugim materijalima potaknuti nekoga da nauči nešto novo i proširi svoje područje znanja. RewriteRule unosi koriste regularne izraze, nisu nimalo komplicirani, na primjer, simbol ^ označava početak retka.

    Oglasi

    ln[-FFhinsv] izvorna datoteka [ ciljna_datoteka ] u [-Ffhinsv] izvorna datoteka ... ciljni_direktorij veza izvorna_datoteka ciljna_datoteka Program ul stvara unos imenika (link) s imenom, ciljna_datoteka. Na ciljna_datoteka isti načini rada koji su uključeni izvorna datoteka. Veze vam omogućuju da imate više kopija iste datoteke ili direktorija, smještenih na različitim lokacijama, bez zauzimanja prostora na disku. Postoje dvije vrste poveznica, tvrde veze i simboličke veze. Kako poveznica upućuje na izvorna datoteka, ovisi o vrsti veze.

    Naredba ln ima sljedeće opcije: -f If ciljna_datoteka već postoji, izbrišite ga kako bi se poveznica mogla stvoriti. Ova opcija poništava opciju -i. -F Ako ciljna_datoteka već postoji i predstavlja direktorij, uklonite ga kako bi se poveznica mogla stvoriti. Opcija -F koristi se zajedno s opcijama -f ili -i, ako nijedan od njih nije naveden, opcija se podrazumijeva -f. Ova opcija ne radi bez opcije -s. -h Ako ciljna_datoteka ili ciljni_direktorij je simbolična veza, nemojte je slijediti. Ova je opcija korisna u kombinaciji s opcijom -f zamijeniti simboličku poveznicu koja upućuje na imenik. -i Interaktivni način rada. Ako ciljna_datoteka postoji, od korisnika će biti zatraženo brisanje ako se slaže, ulće izbrisati ciljna_datoteka i stvorit će novu vezu. Ova opcija poništava opciju -f. -n Slično opciji -h, radi kompatibilnosti s drugim implementacijama programa ul. -s Stvaranje simboličke veze. -v Način za prikaz informacija o izvršavanju programa ul. Prema zadanim postavkama, program ul stvara tvrdu vezu. Čvrsta poveznica na datoteku ne razlikuje se od izvorne datoteke, dok promjene napravljene na datoteci ne ovise o imenu pod kojim joj se pristupilo. Tvrde veze ne mogu biti veze na direktorije, a također se ne mogu nalaziti izvan određenog datotečnog sustava. Simbolička veza sadrži naziv datoteke na koju se povezuje. Prilikom izvođenja operacije otvoren(2) izvorna datoteka se koristi iznad simboličke veze. Poziv stat(2) izvršen na simboličkoj vezi također će vratiti izvornu datoteku. Za dobivanje informacija o poveznici možete koristiti lstat(2). Za čitanje sadržaja simboličke veze, možete koristiti poziv veza za čitanje(2). Za razliku od tvrdih veza, simboličke veze mogu biti na drugom datotečnom sustavu i mogu upućivati ​​na direktorije. S jednim ili dva argumenta, program ul stvara poveznicu na postojeću izvorna datoteka. Naziv veze bit će preuzet iz argumenta ciljna_datoteka. Ako u raspravi ciljna_datoteka, direktorij za stvaranje veze nije naveden, koristit će se trenutni direktorij, ako je naveden samo direktorij, kreirat će se poveznica na zadnji element iz izvorna datoteka. S više od dva argumenta, program ul stvara veze u ciljni_direktorij na sve navedene staze u izvorna datoteka. Veze tada primaju nazive izvornih datoteka. Ako program ul, zove se u obrascu veza, prosljeđuju se točno dva argumenta, proslijeđeni argumenti ne mogu biti direktoriji i ne prihvaća nikakve opcije u ovom obliku. Ovo je jednostavan oblik upotrebe. Mogućnosti kompatibilnosti -h, -i, -n I -v, namijenjeni su kompatibilnosti s drugim implementacijama programa ul, te se ne preporučuju za korištenje u skriptama. Opcija -F je dodatni za