Menü
Bedava
kayıt
ev  /  Kurulum ve konfigürasyon/ WordPress Multisite'da kendi kayıt sayfanızı nasıl oluşturabilirsiniz. Düzeninizdeki form

WordPress Multisite'da kendi kayıt sayfanızı nasıl oluşturabilirsiniz? Düzeninizdeki form

--- Bir depo seçin --- Buffalo Grove IL 60089 ABD (ABD) (Buffalo Grove IL 60089 ABD (ABD)) Chicago ABD ABD Tamara (16677 SW Blanton caddesi ALOHA. Oregon 97078) Highland Park (ABD, ABD Highland Park, IL 60035 Posta Kutusu 723 # 24) İstanbul (İstanbul, Gençtürk Cad.15, Birlik Han. K-5.d.55 # 1) İstanbul (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) Güney Kensington (Bute caddesi) Adler (Sessiz Şerit 2, Kudepsta Bölgesi) Aktobe (Aktyubinskaya caddesi 47/2) Almetyevsk (Almetyevsk, Lenin caddesi) 13, ofis 306) Anapa (Terskaya caddesi 88, 3. kat) Astrakhan (Kommunisticheskaya caddesi 17, ofis 4) Atyrau (Atyrau, Azattyk caddesi. 42, ofis 206) Berdyansk (Zaporozhye bölgesi) Bişkek ( Bişkek Chui caddesi. 32B Izumrud alışveriş merkezi, ofis C-5) Blagoveshchensk (50 Let Oktyabrya caddesi 15. Amurskaya Yarmarka, ofis 575) Buguruslan (Krasnoznamennaya caddesi 47/2) Veliky Ustyug (Veliky Ustyug, Krasnaya caddesi, 61 (2. kat) şehir merkezi) Vladivostok (Svetlanskaya st. 147 ofis 2/4) B olgograd (Volgograd şehri, Aviatorov karayolu 15, depo 23) Dyurtyuli (Agidel st., 4, çeyrek 2) Yeisk (Karla-Marx st. 42/1) Yekaterinburg (st. Pervomayskaya 56, ofis 308) Yekaterinburg (Mamina-Sibiryaka caddesi 10, ofis 3) Ivanovo (Sheremetyevsky perspektifi, 85G, Business Center "Premium Plaza" 2. kat, ofis 212) Izhevsk (Lenina 21, ofis 304. İş Merkezi " Forum " ) Izberbash (Chapaeva 4 ind. 368501) Irkutsk (Irkutsk, Gornaya caddesi 4 (Karamel alışveriş merkezinin yanında) ofis 407) İşimbay (Zorge, ev 18) Yoshkar-Ola (Lenin Ave. 24v, ofis 318) Kazan ( 10, Odorodorinka Grivki yolu, Kozya Sloboda metro istasyonu, ayrıca Dekabristov caddesi, 85 "B" İş merkezi "Relita" ofisi 411 Kamensk-Uralsky (Prospect Pobedy 56) Kemerovo (Demyan Bednogo caddesi, 1 ofis 401) Kiev (Olevskaya caddesi. 9 daire 4 (önceden arama ile varış) Komsomolsk-on-Amur (Shikhanova str. 10, ofis 1 binanın sonundan Komsomolskaya'dan giriş.) Krasnaya 124 ofis 302) Krasnoyarsk (Krasnoyarskiy Rabochiy Ave., 120 Alışveriş Merkezi " Krasnoyarye") Lviv (Soborna Meydanı 12A) Mahaçkale (Akushskiy 9v) Miass (30 Let VLKSM Sokak 85) Minsk (Korzhenevskogo, 26) Moskova (Metro : VDNKh, st.Yaroslavskaya, 10, bina 4 ofis 10 6) Moskova (Simferopolsky Bulvarı) Moskova (Glazovsky Lane 5, Kemer girişi, metro istasyonunun solundaki kapı: Smolenskaya-500m, Kropotkinskaya-1km., Park Kultury-1km.) Moskova (m. Çehovskaya, Pushkinskaya, Tverskaya. Strastnoy bulvarı, 6, bina 1, Delovoy Tsentr, ofis 421) Moskova (Lobnya, Mayakovskogo st., 4A, TP1, 3. kat, ofis 301) Moskova (Molodezhnaya metro istasyonu, Yartsevskaya caddesi, bina 27, bina 9 Ozdorovitelny Merkezi "Dört Elements") Moskova (Krasnaya Presnya 38-45) Moskova (g. Moskova metrosu Taganskaya radyal çıkışı 3, metroya 30 metre. NS. Bolshie Kamenshiki 1, 4. kat, ofis 30) Moskova (metro Leninsky umudu, Vavilova 9A, bina 6, ofis 10 B, 3. kat) Moskova (metro Novoslobodskaya, Mendeleevskaya, Mayakovskaya, Belorusskaya (radyal) 4. Tverskaya caddesi -Yamskaya, 24 Kemerden giriş, ZOO STORE) Moskova (Belorusskaya (halka) metro istasyonu, metro çıkışına 5 metre. ) Moskova (M. ALTUFEVO, Pskovskaya caddesi 6) Moskova (Moskova, Radyo caddesi 5, bina 4.2 kat, 201 ofis (müstakil 3 katlı bina)) Naberezhnye Chelny (Puşkin caddesi 4 (45/05), giriş 2, ofis 2) Naberezhnye Chelny (Sh.Usmanova caddesi, 122 kb. 111 1. kat) Nalçik (Nalçik, Kirov 292a caddesi, 2. kat, ofis 6) Nakhodka (Pogranichnaya caddesi, 6, ofis 304) Nevinnomyssk (50. Yıl, 8A Ekim) Nefteyugansk (12 mikro bölge binası 7) Nizhnevartovsk (Nizhnevartovsk, Mira caddesi 31B.) Nizhny Novgorod (Kominterna) cadde 139, ofis 603 (İş merkezi OREOL)) Nizhny Novgorod (metro Gorkovskaya, sokak Kostina, 3, BC "Yeni meydan", 2. kat, ofis 239) Nizhny Tagil (yakınında L. Krasnoarmeyskaya 42a, 3. kat ofisi 4) Nizhny Tagil (Nizhny Tagil, st. Papanina 5, ofis 1, Kushva, Gornyakova caddesi 2/11) Nikolaev (Ryumin caddesi 5/1) Novorossiysk (Krasnodar bölgesi, Novorossiysk, Tsemdolina köyü, Goldfish caddesi, 15) Novorossiysk (Murat Akhedzhak caddesi., D. 4) ) Novosibirsk (Str., 42 Oktyabrskaya, ofis 601, İş merkezi, yaklaşık Lenin meydanı, Mayakovsky sineması) Novosibirsk (Gogol caddesi 33/1.20 Mareşal Pokryshkina metro istasyonuna, Gogolya'da alışveriş merkezi.) Novotroitsk (Sovetskaya caddesi, D .144 apt. 26) Novy Urengoy (Druzhba microdistrict, 4/3, apt 183) Norilsk (Leninsky prospekti, 47a, ofis 79) Nur-Sultan (Astana) (Beibitshilik 14, BC Marden, ofis 708) Odessa (b - p Fransızca 60 çok profilli rehabilitasyon sanatoryumu "SARTUS") Oktyabrsky (Microdistrict 32a, bina 6, apt.88) Omsk (St. birinci kat, sağ sundurma.) Orsk (Lenin Ave. 93) Pavlodar (St. Satpayev st. 71) ofis 107) Perm (Sovetskaya d. 52 ofis 1) Perm (Druzhby caddesi, bina 34 ofis 305) Pyt-Yakh (Microdistrict 5, bina 5) Pyatigorsk (sokak 295 Tüfek Bölümü ve 13, bina 2) Rostov-on-Don (Sobornyi Lane 21 ofis 10 B) Salavat (Lenin caddesi, bina 3 ofis 209, 2. kat) Samara (Novo-Sadovaya caddesi 106, ofis 804, sol asansör, 8. kat ) Petersburg (metro: Vasileostrovskaya, Vasilievsky Adasının 13. hattı, 78, ofis 182) St. Petersburg (Metro Dostoevskaya (5 metre) ve Vladimirskaya metrosu (300 metre) VLADIMIRSKY PASSAGE 3. kat, merkezi giriş BİRİNCİ GALERİ, pr. Vladimirsky 19) Saint Petersburg (metro Admiralteyskaya (10 metre) metro Nevsky umudu (7 dakika yürüme mesafesinde). TC "ADMIRAL" Malaya Morskaya caddesi, 4/1) Saint Petersburg (metro Sennaya, metro Sadovaya, m Spasskaya yürüyerek 1 dakika, Efimova cadde 1, kat 2, ofis 4, iş merkezi "Sennaya 4", "Sever" kafenin solunda giriş Saratov (Bolshaya Gornaya caddesi, 359V, ofis No. 3) Sivastopol (Ochakovtsev caddesi 19 , merkez "Plaza", zemin kat, ofis 29/2) Snezhinsk (st.Zababakhina 19 a) Sochi (Sochi ko. Donskaya evi 15.) Sochi (st. Sovetskaya 42 ofis 204) Stavropol (st. Lomonosov ofisi 21 18) Sterlitamak ( 85 Khudayberdin caddesi, 3. kat) Surgut (30 yıllık Pobedy caddesi, 64) Tobolsk (Tobolsk, 6 mikro bölge, ev 11, ofis 39 (Komsomolsky umudundan giriş)) Togliatti (40 yaşında Pobedy, 50, ofis 212a, TD Raduga 1. kat) Tomsk (Tomsk, Sovetskaya caddesi 84) Tüymazy (Michurina caddesi, 15 ofis 2) Tyumen (72 Herzen caddesi, ofis 214) Ulyanovsk (Ryabikova caddesi, bul. 73) Ust-Kamenogorsk (57 Gorky caddesi, Ofis 213) Ufa (Verhnetorgova meydanı, 6 (İş merkezi NESTEROV)) Habarovsk (Postysheva caddesi, 16 ofi s 108) Khanty-Mansiysk (G. Khanty-Mansiysk, st. Karl Marx 15, 2. kat.) Chelyabinsk (Prospect Pobedy 168, 3. kat, ofis 36.) Çerkessk (Lenin caddesi 101) Chita (Babushkina caddesi 104, ofis 425) Chishmy (Koltsevaya 17) Chishmy (Druzhby caddesi. , 1B) ) İsviçre (Arosio via Terra Sotto, 1 6939) Çimkent (47 Kolkhoznaya caddesi) Yuzhno-Sakhalinsk (21 Angarsky yolu) Yakutsk (Dzerzhinsky caddesi 8 / 3b) Yakutsk (Yakutsk) Yalta (Lenin set, 5a, SEC "Fountain) 4. kat) Yanaul (Sovetskaya caddesi, 23, ofis N 8, Beryozka binası) Yaroslavl (57 ShowRum) Yaroslavl (Çkalova caddesi 2) Birsk Başkurdistan ()?>

APOTHEOSIS APOTHEOSIS (Yunanca apotheosis - tanrılaştırmadan), 1) Helenistik Yunanistan ve Antik Roma'da, bir devlet adamının, kahramanın, imparatorun tanrılaştırılması, ilahi özü elde etmesi. Rönesans döneminde fenomenin adı resimde, tiyatroda imajına aktarıldı. Modern anlamda, apotheosis, bir kahramanın yüceltilmesi sahnesidir, gösterinin ana fikrini plastik olarak ifade eden ve müzikal veya dramatik bir performansla sonuçlanan muhteşem bir "canlı resim". Apotheosis biçimi (aynı zamanda, zaman içinde ortaya çıkan bir tanrılaştırma olan bir övgü niteliğindeki performansın yanı sıra) Batı Avrupa tiyatrolarında ve 16. ve 18. yüzyılların Rus saray tiyatrosunda geliştirildi; ayrıca devrimci dönemlerin tiyatrosunda da gelişti - 18. yüzyılın sonunda Fransa'da, Ekim Devrimi'nden sonra Rusya'da. 2) Geniş anlamda - yüceltme, bir kişinin yüceltilmesi, olay, fenomen.

Modern ansiklopedi. 2000 .

Eş anlamlı:

Diğer sözlüklerde "APOPHEOSIS" in ne olduğunu görün:

    - (Yunanca apotheum'dan ilahlaştırmak için). 1) kahramanların ve Roma imparatorlarının tanrılara karşı hesabı. 2) ünlü bir kişiyi pagan tanrısı şeklinde tasvir eden bir resim. 3) tiyatroyu bitiren ciddi bir resim, oyun. Yabancı kelimeler sözlüğü, ... ... Rus dilinin yabancı kelimeler sözlüğü

    Santimetre … eşanlamlı sözlük

    tanrılaştırma- bir m. apothéose f. 1. Tanrıların ev sahibine okuma. Sl. 18. Herkül'ün tanrılaştırılmasına göre. Pelsk. Kum 2 196. Salonun ana güzelliği, ressam Lemoine tarafından tuval üzerine yağlı boyalarla boyanmış ve Herkül putperestliğini temsil eden plafond ... ... Rus Galyacılığının Tarihsel Sözlüğü

    tanrılaştırma- (Yunanca tanrılaştırma tanrılaştırmasından), 1) Helenistik Yunanistan ve Antik Roma'da, bir devlet adamının, kahramanın, imparatorun tanrılaştırılması, ilahi bir öz edinmesi. Rönesans döneminde fenomenin adı imajına aktarıldı ... Resimli Ansiklopedik Sözlük

    - (Yunanca apotheosis - tanrılaştırmadan), başlangıçta eski Mısırlılar arasında ve daha sonra Yunanlılar ve Romalılar arasında, yöneticilerin özel değerleri için tanrılaştırmanın ciddi ayini. Zamanla hükümdarlar kültüne dönüşen tanrılaştırma, ... ... Felsefi Ansiklopedi

    - (Yunancadan. apotheosis tanrılaştırma). Büyük Ansiklopedik Sözlük

    APOTHEOSIS, apotheosis, koca. (Yunanca tanrılaştırma tanrılaştırması). 1. Kahramana, imparatora (ist.) ilahi onurlar sunmanın eski ritüeli. 2. Faaliyetini taçlandırma karakterine sahip birinin (kitap) özellikle ciddi halk övgüsü ... Ushakov'un Açıklayıcı Sözlüğü

    APOPHEOSIS, ah, kocam. 1. Birinin yüceltilmesi, yüceltilmesi ne n. (kitap). 2. Bazı tiyatro gösterilerinin ciddi final sahnesi (özel). | sf. tanrılaştırma, oh, oh. Ozhegov'un Açıklayıcı Sözlüğü. Sİ. Özhegov, N.Yu. Şvedova. 1949 ... ... Ozhegov'un Açıklayıcı Sözlüğü

    - (Yunan tanrılaştırmasından) antik çağda, eski Yunan devlet adamlarının, daha sonra Roma imparatorlarının tanrılaştırılması töreni. Tiyatro işinde, tanrılaştırmaya performansın son ciddi kitle aşaması denir veya ... ... Politika Bilimi. Sözlük.

    Jean Auguste Dominique Ingres. Napolyon'un Apotheosis'i, 1853 Apotheosis, modası geçmiş. tanrılaştırma ... Vikipedi

Kitabın

  • Yersizliğin tanrılaştırılması
  • Temelsizliğin ilahlaştırılması, Shestov Lev. Temelsizliğin Özdeyişi muhtemelen Lev Shestov'un kitaplarının en ünlüsü ve en azından en skandalıdır. İçinde, evrensel olarak bağlayıcı bilgiye önden bir saldırı yapar ve ...

Santimetre … eşanlamlı sözlük

BAINKI, değişmedi. ch. (çocukça). Uyku. Baine ister misin? Uzan bainki. Ushakov'un açıklayıcı sözlüğü. D.N. Ushakov. 1935 1940 ... Ushakov'un Açıklayıcı Sözlüğü

Bainki yap / yap (güle güle al). Zharg. iskele Servis aracı. Uyku. Maksimov, 21 ... Büyük bir Rusça sözler sözlüğü

tahmin ediyorum. konuşma dili Uyku durumu hakkında (çocukların konuşmasında veya yetişkinler ve çocuklar arasındaki bir konuşmada). II int. konuşma dili Bir ninni bileşeni olarak kullanılır. Efremova'nın Açıklayıcı Sözlüğü. T.F. Efremova. 2000 ... Efremova'nın Rus dilinin modern açıklayıcı sözlüğü

bainki- b ainki, kusursuz ... Rusça yazım sözlüğü

bainki- değişmedi ... Rus dilinin yazım sözlüğü

Int., fonk. masal. = Bay bay (II işareti.) ... ansiklopedik sözlük

bainki- Uluslararası; işlevde masal. = 2'ye kadar satın al ... Birçok ifadenin sözlüğü

bainki- ba / mürekkep / i, arasında ... Biçimbirim-yazım sözlüğü

Kitabın

  • Bainki, Tokmakova I.P.. Bu kitapta bebeğiniz için ninniler okuyabilir hatta söyleyebilirsiniz. Bir kesim ile rezervasyon yapın ...
  • Bainki (ed. 2006), Irina Tokmakova. Bu kitapta bebeğiniz için ninniler okuyabilir hatta söyleyebilirsiniz. Bir kesim ile rezervasyon yaptırın. ISBN: 5-9524-2404-X ...

Aynı anda birden fazla site için bir WordPress kurulumunu kullanmanıza izin verir. Aynı zamanda, her site benzersiz bir önekle veritabanında kendi tablolarını alır.

Kayıtlı kullanıcıların verilerini içeren tablolar, ağdaki tüm siteler için ortaktır. Bu kesin bir artıdır ve bir kez kaydolarak birçok siteye erişebilirsiniz. Ayrıca her sitede aynı hesap farklı haklara sahip olabilir. Örneğin, bir sitede bir kullanıcı editör, diğerinde ise yönetici olabilir.

Tipik bir kurulumda WordPress sayfası kayıt, yetkilendirme ve parola sıfırlama wp-login.php dosyasının çıktısını verir.

  • wp-login.php - yetkilendirme
  • wp-login.php?eylem = kayıt - kayıt
  • wp-login.php?action = kayıp şifre - şifre sıfırlama

Multisite modunda, WordPress çekirdeği biraz farklı davranmaya başlar ve wp-login.php? Bu, WordPress'in varsayılan olarak sahip olduğu ağınız için kayıt sayfasıdır.

Normal kullanıcı hesaplarını kaydetmeye ek olarak, süper yönetici bu özelliği ağ ayarlarında etkinleştirmişse (Ağ Yöneticisi → Ayarlar → Ağ Ayarları) üzerinde yeni bir web sitesi oluşturabilirsiniz.

Çoğu temada kayıt sayfası pek iyi görünmüyor. Birçok dış görünüm, sayfalardaki farklı öğeleri stillendirmek için Bootstrap gibi CSS çerçevelerini ve kendi özel sınıflarını kullanır, bu nedenle herkes için çalışan tek bir HTML yazmak zordur.

Ancak sayfa düzensiz görünüyorsa umutsuzluğa kapılmayın. wp-signup.php dosyası ilk başta harikadır, sitenin her ayrıntısı üzerinde çalışmak için zamanınız olmadığında - diğer daha önemli sayfalara ve içeriğe odaklanabilirsiniz.

Kendi kayıt sayfanızı oluşturmaya hazır olduğunuzda, wp-signup.php, WordPress'in kullanıcı girdisini işlemek ve doğrulamak ve yeni hesaplar oluşturmak için sağladığı çeşitli işlevleri anlamanıza yardımcı olacak iyi bir örnek ve örnek olacaktır.

Ağın ana sitesi

WordPress varsayılan olarak ağın ana etki alanında (site) bir kayıt sayfası (wp-signup.php) açar. Ancak, bir teması olsa bile ağdaki her site için kayıt sayfaları oluşturabilirsiniz.

Ağdaki tüm sitelerin aynı temayı kullandığı, ancak her birinin bir kayıt sayfası olduğu durumu ele alacağız. Siteler dilde (İngilizce ve Rusça) farklılık gösterir, bu nedenle kayıt sayfası sitenin "yerel" dilinde görüntülenecektir. Siteler farklı temalar kullanıyorsa, her şey ne tür temalar olduklarına, aynı düzenin onlara uygun olup olmadığına (sizi tüm temalarınızı birleştirmeye zorlayabilecek mükemmel bir durum) veya sayfaları tek tek çalışmaya değip değmeyeceğine bağlı olacaktır.

function.php'ye alternatif

Dosya sırası

MU eklentileri, size mantıklı görünen herhangi bir sayıda dosya ve yapı içerebilir. Bu hiyerarşi gibi bir şeye bağlıyım:

| mu-eklentileri | | yük.php | | selena ağı | | | kayıt | | | | eklenti.php | | | ... | | | jet çantası | | | | eklenti.php

load.php dosyası çevirileri ve gerekli tüm "eklentileri" içerir:

// MU eklentileri için çevirileri yükle load_muplugin_textdomain ("selena_network", "/ selena-network / diller /"); // Kayıt sayfası için işlevsellik için WPMU_PLUGIN_DIR gerekir. "/selena-network/signup/plugin.php"; // Başka bir eklenti // WPMU_PLUGIN_DIR gerektirir ...

Selena-network dizininin içinde eklenti klasörleri bulunur. Her birinin load.php içine dahil ettiğimiz kendi plugin.php dosyası vardır. Bu, acil durumda çalışan bir projedeki bireysel bileşenleri anında devre dışı bırakma ve etkinleştirme esnekliği ve yeteneği sağlar.

Kayıt sayfası

Kodu nereye ve nasıl yazacağımızı anladıktan sonra kayıt sayfasını oluşturmaya geçebiliriz.

Normal bir arayüz üzerinden example.org/signup/ adresinde bir sayfa oluşturalım. Adres olarak projenize uygun görünen herhangi bir URL'yi kullanabilirsiniz.

Gerekli kayıt sayfasına yönlendirin

WordPress'in yeni kayıt sayfamızdan haberdar olması ve sayfaya yönlendirmesi için "Kayıt Ol" bağlantısına tıklandığında wp_signup_location filtresi kullanılır. wp-login.php içinde bulunabilir ve varsayılan olarak wp-signup.php'ye yönlendirmeden sorumludur.

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

Hatırladığınız gibi, varsayılan olarak, ağın ana etki alanında kayıt sayfası açılır. Bu nedenle burada network_site_url() kullanılmıştır.

Mevcut sitedeki kayıt sayfasının adresini döndürecek olan mu-plugins / selena-network / signup / plugin.php içindeki filtreye işleyicimizi ekleyelim:

fonksiyon selena_network_signup_page ($ url) (home_url'ye dön ("kaydolma"));) add_filter ("wp_signup_location", "selena_network_signup_page", 99);

selena_network, çarpışmaları önlemek için sitemdeki MU eklentilerinin içindeki tüm işlevlerin adlarında kullandığım önek, kendi benzersiz önekimle değiştirilmelidir. Filtrenin önceliği 99'dur, çünkü bbPress ve BuddyPress gibi bazı eklentiler bu URL'nin üzerine kendi URL'lerini yazabilir (MU eklentileri normal eklentilerden daha erken yüklenir, yukarıya bakın).

network_site_url ()'den farklı olarak, ağın ana sitesini değil, geçerli sitenin adresini döndüren home_url () öğesinin kullanıldığını unutmayın.

İşlevsellik wp-signup.php

wp-signup.php dosyası birçok işlev ve kod içerir. Büyük resmi görmek için kod katlamayı kullanabilirsiniz. Buna İngilizce'de genellikle "kod katlama" denir.

Dosyanın en başında 1'den 80 satıra kadar (4.1.1 sürümünde) üretilir çeşitli kontroller ve get_header () kullanılarak sayfanın "başlangıcı" görüntüleniyor.

Daha sonra, birçok yöntem bildirilir ve onlarla çalışmaya başlamadan önce, her bir işlevin ne yaptığını anlamaya değer. Birçoğu genellikle içinde wpmu_ öneki olan diğer işlevleri kullanır ve bunların tümü wp-includes / ms-functions.php dosyasında bildirilir. Kodu kendiniz görmeden bu bölümü anlamak zor. Aşağıda, zorluklarla karşılaşmanız durumunda ana işlevlerin kısa bir açıklaması bulunmaktadır.

  • wpmu_signup_stylesheet () - Kayıt sayfasında ek CSS çıktısı alır.
  • show_blog_form () - site kaydı için alanlar (adres, ad, arama motorları için görünürlük).
  • validate_blog_form () - wpmu_validate_blog_signup () kullanarak girilen site adresini ve adını doğrulayın.
  • show_user_form () - kullanıcı kaydı için alanlar (oturum açma ve e-posta adresi).
  • validate_user_form () - girilen oturum açma ve e-posta adresinin doğrulanması. wpmu_validate_user_signup () kullanarak posta.
  • signup_another_blog () - sitede zaten kayıtlı olan kullanıcılar için show_blog_form () kullanarak yeni siteler kaydetmek için alanlar.
  • validate_another_blog_signup () - validate_blog_form () kullanarak site URL'sini ve başlığını kontrol eder.
  • signup_user (), kayıt sayfası alanlarını görüntülemek için ana işlevdir.
  • validate_user_signup () - kullanıcı adını ve e-posta adresini doğrular. validate_user_form () kullanarak posta.
  • signup_blog () - show_blog_form () kullanarak sitenin adresini, adını ve görünürlüğünü girmek için alanlar (kaydın ikinci adımı).
  • validate_blog_signup () - oturum açmayı, e-postayı doğrular. posta, adres ve site adı.

wp-signup.php dosyasının en altında (sürüm 4.1.1'deki 646 satırından), yukarıda açıklanan tüm yöntemleri kullanan kayıt sayfasının ana mantığı. Kodun bu kısmı bir fonksiyona taşınmaz. Sonunda get_footer() çağrılır.

wp-signup.php işlevini kopyalayın

Daha sonra, wp-signup.php dosyasını MU eklentilerine kopyalama ve "çatal" üzerinde değişiklik yapma prosedürünü anlatacağız. Belki de bu en iyisi gibi görünmeyebilir doğru yol... Bunun yerine, normal işlevler yerine sınıfları kullanarak kendi form doğrulamanızı yazabilir ve işlevleri sıfırdan görüntüleyebilirsiniz. Bence wp-signup.php sayfamız için gerekli tüm mantığa zaten sahip, geriye sadece küçük değişiklikler yapmak kalıyor.

WordPress'i güncellediğinizde, wp-signup.php zaman zaman değişir, ancak bu, her sürümde çatalınızı senkronize etmeniz gerektiği anlamına gelmez. wp-signup.php içindeki işlevler esasen yalnızca HTML çıktısı, veri doğrulama, hesap ve site oluşturma, ms-functions.php içinde bildirilen wpmu_ önekine sahip yöntemler ile ilgilidir.

Sayfada kayıt formunu gösterecek bir fonksiyon oluşturmaya başlayalım. Bunu yapmak için wp-signup.php dosyasını WordPress kökünden mu-plugings / selena-network / signup / dizinine kopyalayın. Onu mu-plugins/selena-network/signup/plugin.php içine bağlayalım).

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

Kopyalanan dosyanın en başından tüm gerekli ve gereksiz kontrolleri kaldırın. 4.1.1 sürümünde, 1'den 80 satıra kadar olan tüm kod budur.

Artık kayıt formunu görüntülemek için ana işlevi oluşturmaya hazırız. Bunu yapmak için, tüm mantığı 646 satırından dosyanın en sonuna kadar selena_network_signup_main adlı bir işleve taşıyın. En sonunda, iki ekstra kapanışı kaldıracağız

(satır 722 ve 723), ayrıca get_footer() çağrısı.

Yeni oluşturulan selena_network_signup_main() içinde, en başta, bu dosyadan diğer tüm yöntemler tarafından kullanılan global active_signup değişkenini ilan ediyoruz. Ve dosyanın en başından kaldırdığımız Before_signup_form olayına bir çağrı ekleyin.

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

Şimdi geriye kalan tek şey, gerekli olan tüm yerlerde düzeni değiştirmek ve kayıt sayfası hazır.

Kayıt formunun çıktısı

Burada en az iki seçenek var. Daha uygun yol- bir kısa kod oluşturun ve normal bir düzenleyici kullanarak sayfaya yerleştirin.

// Bir kısa kod oluşturun network_signup add_shortcode ("network_signup", "selena_network_signup_main");

İkinci seçenek, alt tema klasöründe bir page-signup.php sayfa şablonu oluşturmaktır. "Kaydol" kelimesi yerine, sayfaya atanmış benzersiz bir kimlik kullanabilirsiniz. Şablonun içine gerekli düzeni ekleyin ve doğru yerde selena_network_signup_main () öğesini çağırın.

Sonuç olarak, kayıt sayfam çok daha iyi ve temiz görünüyor.

Aktivasyon sayfası

Tarafından varsayılan WordPress geleneksel olarak Multisite'deki kayıt sürecini iki adıma böler - sitede bir form doldurma ve gönderilen bağlantıya tıkladığınızda bir hesabı etkinleştirme e-posta... Önceki bölümde oluşturulan formu doldurduktan sonra, WordPress, hesabınızı etkinleştirmek için küçük bir talimat ve bir bağlantı içeren bir e-posta gönderir.

WordPress kök dizininde bulunan wp-activate.php dosyası, aktivasyon sayfasının görüntülenmesinden sorumludur. wp-activate.php de tamamen değiştirilebilir. İşlem, wp-signup.php için zaten yaptığımıza benzer.

Normal bir arayüz üzerinden bir example.org/activate/ sayfası oluşturalım. Adres için uygun bulduğunuz URL'yi kullanın.

wp-activate.php dosyasını MU eklentilerimize kopyalayalım ve mu-plugins/selena-network/signup/plugin.php dizinine bağlayalım.

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

wp-signup.php'den farklı olarak içeride çok fazla içerik yok. Dosya tek işlemi gerçekleştirir - doğru anahtar alındığında hesabı etkinleştirir ve bir hata mesajı veya işlemin başarıyla tamamlandığını görüntüler.

Gereksiz tüm kontrolleri kaldıralım ve WordPress 4.1.1'de 1'den 69 satıra kadar gerekli olanları kaldıralım. En sonunda get_footer() çağrısını kaldıralım. İçeriğin geri kalanını selena_network_activate_main () işlevine taşıyın.

WP_INSTALLING sabitinin WordPress (wp-load.php) yüklenmeden önce burada bildirildiğini belirtmek ilginçtir. Varlığı, WordPress'in eklentileri yüklememesini sağlar.

Kayıt sayfasında olduğu gibi, geriye kalan tek şey, gerektiğinde düzeni düzeltmektir. Görüntülenen mesajların metnini de değiştirebilirsiniz (bu durumda, MU eklentilerinizin metin alanını tüm çevirmen işlevlerine eklemeyi unutmayın, varsayılan olarak hiçbir yere yüklenmez).

Hazır işlevi, bir alt temada bir kısa kod veya ayrı bir şablon aracılığıyla önceden oluşturulmuş bir sayfada kullanılabilir.

Doğru bağlantılara sahip aktivasyon e-postaları

Aktivasyon sayfası kullanıma hazır, ancak WordPress bunu bilmiyor ve yine de wp-activate.php bağlantısı içeren aktivasyon e-postaları gönderecek. wp-signup.php'den farklı olarak, burada adresi değiştirmenize izin verecek bir filtre yoktur. Bunun yerine, e-postaları doğru bağlantılarla gönderecek kendi işlevinizi yazmanız gerekir.

Sayfadaki formu doldururken ve gönderirken WordPress kaydı wpmu_signup_ çağrıları kullanıcı() veya wpmu_signup_ Blog() kayıt türüne bağlı olarak. Her iki işlev de oluşturur Yeni giriş wp_signups tablosunda, aralarında bir hesap etkinleştirme anahtarının bulunduğu gerekli içerikle doldurun.

Ardından, işleve bağlı olarak wpmu_signup_ çağrılır. kullanıcı _notification () veya wpmu_signup_ Blog _bildirim (). Her iki işlevin de benzer işlevleri vardır - etkinleştirme bağlantısı içeren bir e-posta oluşturur ve gönderirler, ancak farklı argümanları kabul ederler. Her ikisinin de olayı "kesmek" için filtreleri vardır.

Eğer (! Apply_filters ("wpmu_signup_user_notification", $ user, $ user_email, $ key, $ meta)) false döndürürse;

Bir blog oluşturarak hesapları etkinleştirmek için:

If (! Apply_filters ("wpmu_signup_blog_notification", $ domain, $ path, $ title, $ user, $ user_email, $ key, $ meta)) (yanlış döndür;)

Geriye kalan tek şey, içinde wp_mail () aracılığıyla e-posta gönderen kendi işleyicilerinizi yazmak ve en sonunda, WordPress'in iki kez bir etkinleştirme e-postası göndermemesi için yanlış verdiğinizden emin olun - biri sizin, diğeri varsayılan wp-activate.php bağlantısı içeren e-posta.

fonksiyon selena_network_wpmu_signup_user_notification ($ user, $ user_email, $ key, $ meta = array()) (// E-postanın başlığını, metnini ve başlıklarını oluşturun // ... // E-postayı gönderin veya göndermek için bir Cron görevi ekleyin email wp_mail ($ user_email , wp_specialchars_decode ($ konu), $ mesaj, $ message_headers); // WordPress'in aktivasyon e-postasını iki kez göndermemesi için false gönder false döndür;) add_filter ("wpmu_signup_user_notification", "selena_network_wpmu_signup_user_notification", 10, 4);

Bir SMTP sunucusu üzerinden e-posta gönderiyorsanız veya kayıt sayısı çok fazlaysa, anında e-posta göndermemeyi düşünmelisiniz. Bunun yerine, WordPress Cron kullanarak Cron görevleri ekleyebilirsiniz.

wp-signup.php ve wp-activate.php'ye erişimi kapatma

Kendi kayıt ve aktivasyon sayfalarınızı oluşturduktan sonra "orijinalleri" kapatmanız gerekebilir. Örneğin, kayıt sayfasında doldurulması gereken ek alanlar varsa. Ayrıca, birçok WordPress sitesi spam kayıtlarına tabidir.

İki sorunu tek adımda çözmek için bu sayfaları açmaya çalışırsanız Apache'den 404 döndürmesini isteyebilirsiniz. Bunu yapmak için, yapılandırma dosyanıza veya .htaccess'inize birkaç ek RewriteRule kaydetmeniz yeterlidir.

RewriteBase'de RewriteEngine / # Normal ifadeleri bilmek asla gereksiz olmayacak :) RewriteRule ^ wp-signup \ .php - RewriteRule ^ wp-activate \ .php - # BEGIN WordPress # Varsayılan WordPress kurallarına dokunmayın :) # ... # WordPress'i SONLANDIR

Çözüm

İnternette bunun ve WordPress ile ilgili diğer birçok "sorun" için birçok çözüm var. Örneğin, kayıt ve aktivasyon sayfaları oluşturmak için bazıları orijinal wp-signup.php ve wp-activate.php dosyalarının yeniden yazılmasını önerir. Bunu yapmaya değmez, çünkü WordPress'i güncellerseniz, dosyalarda yapılan tüm değişiklikleri kaybedersiniz ve ayrıca çekirdek bütünlüğünü kontrol edemezsiniz.

Herhangi bir eklenti, tema veya çözüm geliştirirken WordPress'in içinde neler olup bittiğini anlamak için biraz zaman harcamalısınız. Bunun için birçok yararlı hata ayıklama aracı vardır.

not

Yeni kullanıcılara otomatik olarak farklı roller atamak için Multisite User Management eklentisini kullanabilirsiniz.

Makaleyi okuduktan sonra kayıt ve aktivasyon sayfalarının oluşturulması sırasında herhangi bir sorunuz veya zorluğunuz varsa, yorum bırakın ve kesinlikle cevaplayacağız.

27.03.2015 27.03.2015

WordPress geliştiricisi. Her şeyde düzeni sever ve yeni araçları anlar. Symfony bileşen mimarisinden esinlenilmiştir.

  • Standart wp-signup.php yerine multisite için kendi kayıt sayfamızı oluşturuyoruz.

    Tipik bir WordPress kurulumunda, kayıt (oturum açma, parola sıfırlama) sayfası wp-login.php dosyasını görüntüler.

    • /wp-login.php - yetkilendirme
    • /wp-login.php?action=register - kayıt
    • /wp-login.php?action=lostpassword - parola sıfırlama

    wp-login.php'de multisite için ayrı koşullar vardır. Bu nedenle, bir çoklu sitede /wp-login.php?action=register bağlantısını tıkladığınızda, WordPress /wp-signup.php sayfasına yönlendirilecektir. Birçok temada sayfa çok çekici görünmüyor, bu yüzden kendimizinkini yapacağız.

    Ağın ana sitesi

    WordPress varsayılan olarak ağın ana etki alanında (site) bir kayıt sayfası (wp-signup.php) açar. Ancak, bir yapabilir ayrı sayfa Farklı temalara sahip olsalar bile ağdaki her site için kayıtlar. Ağdaki tüm sitelerin kendi kayıt sayfasına sahip olduğu, ancak aynı temanın kullanıldığı ve sitelerin yalnızca dilde farklılık gösterdiği durumu ele alacağız. Farklı temalar kullanılıyorsa, daha fazla kod yazılması gerekecektir.

    fonksiyonlar.php?

    Numara. Bu dosyanın adı her WordPress makalesinde geçiyor gibi görünüyor. Bizim durumumuzda, kayıt işlevselliği birkaç site için tasarlandığından, herhangi bir siteyi açtığınızda yüklenen MU eklentilerine taşımak mantıklıdır.

    lirik arasöz

    MU eklentilerinin normal eklentilerden daha erken ve WordPress çekirdeği tamamen yüklenmeden önce yüklendiğini belirtmekte fayda var, bu nedenle bazı işlevlerin çağrılması PHP'de ölümcül hatalara neden olabilir. Bu "erken" yüklemenin de avantajları vardır. Örneğin, herhangi bir temanın içinde, function.php dosyası temadan yüklenmeden önce tetiklenen bazı eylemlere tutunamazsınız. Buna bir örnek, Jetpack'teki modüllerin etkinliğini izlemenin mümkün olduğu jetpack_module_loaded_ilgili-posts (ilgili gönderiler - modülün adı) biçimindeki Jetpack eklentisindeki eylemlerdir. Tema dosyasından bu eyleme "yapışmak" imkansızdır, çünkü eylem tema yüklenmeden önce zaten tetiklenmiştir - eklentiler temalardan önce yüklenir. Siparişin genel resmine bir göz atın WordPress indirmeleri kodeksteki Eylem Referans sayfasında bulunabilir.

    Dosya sırası

    MU eklentileri, herhangi bir sayıda dosya ve size mantıklı görünen herhangi bir yapı içerebilir. Bu hiyerarşi gibi bir şeye bağlıyım:

    | -mu-eklentiler | - | -load.php | - | - | -selena-network | - | - | - | -kayıt | - | - | - | - | -plugin.php | - | - | - | - | -... | - | - | - | -jetpack | - | - | - | - | -plugin.php

    Ağımız için gerekli tüm "eklentiler" load.php dosyasına bağlanır:

    // Tüm eklentiler için Çevirileri Yükle load_muplugin_textdomain ("selena_network", "/ selena-network / diller /"); // Ağ Kaydı WPMU_PLUGIN_DIR gerektirir. "/selena-network/signup/plugin.php"; // Başka eklentiler // WPMU_PLUGIN_DIR gerektirir ...

    Eklenti klasörleri selena-network klasörünün içinde saklanır, her birinin load.php içine dahil ettiğimiz kendi plugin.php dosyası vardır. Bu size esneklik ve işleri hızlı bir şekilde kapatıp açma yeteneği verir.

    Kayıt sayfası adresi

    Kayıt sayfasının adresini belirtmek için wp_signup_location filtresi kullanılır. wp-login.php dosyasının içinde bulunabilir ve wp-signup.php'ye yönlendirmeden sorumludur.

    Case "register": if (is_multisite ()) (wp_redirect (apply_filters ("wp_signup_location", network_site_url ("wp-signup.php"))); çıkış;

    Mevcut sitedeki kayıt sayfasının adresini döndürecek olan mu-plugins / selena-network / signup / plugin.php dosyasına fonksiyonumuzu ekleyelim:

    fonksiyon selena_network_signup_page ($ url) (home_url'ye dön (). "/ Signup /";) add_filter ("wp_signup_location", "selena_network_signup_page", 99);

    selena_network, çarpışmaları önlemek için sitemdeki MU eklentilerinin içindeki tüm işlevlerin adlarında kullandığım önek, kendi benzersiz önekimle değiştirilmelidir. Filtrenin önceliği 99'dur, çünkü bbPress ve BuddyPress gibi bazı eklentiler bu URL'nin üzerine kendi URL'lerini yazabilir (MU eklentileri normal eklentilerden daha erken yüklenir, yukarıya bakın). Ziyaretçiyi aynı etki alanında tutmak için network_site_url () yerine home_url () kullanıldığını unutmayın. Adres olarak herhangi bir URL kullanılabilir.

    Bir sayfa yarat

    Şimdi normal arayüz üzerinden site.com/signup/ adresiyle bir sayfa oluşturalım ve alt tema klasöründe bizim için şablon yeni sayfa- sayfa-signup.php. "Kaydol" kelimesi yerine benzersiz bir kimlik kullanabilirsiniz.

    Yeni şablonun içinde, kayıt formunu görüntüleyecek olan selena_network_signup_main() işlevini çağırmanız gerekir.

    Şablonlarla tüm sürecin gerekli olmadığı ve bunun yerine selena_network_signup_main () işlevini de çağıracak kendi kısa kodunuzu oluşturabileceğinize dikkat edilmelidir.

    wp-signup.php ve wp-activate.php

    Şimdi kayıt formunu gösterecek bir fonksiyon oluşturmaya başlayalım. Bunu yapmak için wp-signup.php ve wp-activate.php dosyalarını WordPress kökünden mu-plugings / selena-network / signup / dizinine kopyalayın (ve bunları mu-plugins / selena-network içine bağlamayı unutmayın) / kayıt / plugin.php) ... Dosyalarla daha fazla manipülasyon yapmak son derece zor ve tarif etmek zaman alıcıdır, bu yüzden bunları kendiniz yapmanız gerekecektir. Sadece tam olarak yapılması gerekenleri anlatacağım ve yayınlayacağım kaynak dosyaları senin projen:

    1. Dosyanın başında, tüm gereksinimleri, işlev çağrılarını ve işlevlerin dışındaki diğer kodları kaldırın.
    2. Adlara benzersiz önekler ekleyerek tüm işlevleri yeniden adlandırın.
    3. wp-signup.php kodunun alt kısmını selena_network_signup_main işlevine sarın ve en baştan global $ active_signup yazın; ...
    4. Düzeni doğru yerlerde kendi düzeninizle değiştirin.

    wp-activate.php içinde, yaklaşık olarak aynısını yapmanız gerekir:

    1. Fonksiyonların dışındaki tüm kodları kaldırın, düzeni ayrı bir fonksiyona sarın.
    2. Gerektiğinde düzeni değiştirin.

    wp-activate.php dosyası hesap aktivasyon sayfasından sorumludur. Kayıt sayfasında olduğu gibi, bunun için de wp-activate.php dosyasından işlevi çağırdığınız ayrı bir şablon oluşturmanız gerekir.

    Aktivasyon mektupları gönderiyoruz

    Kayıt sayfası, ziyaretçiye hesabını etkinleştirmesi için bir bağlantı içeren bir e-posta gönderir. Varsayılan olarak, bu, ms-functions.php dosyasındaki wpmu_signup_user_notification () işlevi tarafından yapılır. İşlevselliği, işleviniz için ödünç alınabilir. Bu özelliği kullanmayı bırakmanın nedeni, wp-activate.php adresinden hesap aktivasyon bağlantısını göndermesidir. Bu işlevi wpmu_signup_user_notification filtresini kullanarak false vererek "devre dışı bırakabilirsiniz" (bunu yapmazsanız, aktivasyon mektubu iki kez gönderilecektir, tamam, aslında iki farklı harf).

    Armyofselenagomez_wpmu_signup_user_notification işlevi ($ user, $ user_email, $ key, $ meta = array()) (// ... // wpmu_signup_user_notification() işlevinden kod wp_mail ($ user_email, wp_specialchars_decode ($ message_headers), $ mesaj), $ ; false döndür;) add_filter ("wpmu_signup_user_notification", "armyofselenagomez_wpmu_signup_user_notification", 10, 4);

    Sonuç olarak, Selena temasındaki kayıt sayfası çok daha temiz ve daha doğru görünüyor.

    Çözüm

    Aynısını İnternette yapmanın pek doğru olmayan başka yolları da var - Apache yönlendirmeleri, Java Script olmadan çalışmayacak AJAX formları, vb. kendi web sitesi.

    Dosyaları dikkatli bir şekilde düzenlemeniz ve orijinalinden fazla sapmamaya çalışmanız gerektiğini unutmayın, böylece gelecekte WordPress wp-signup.php ve wp-activate.php dosyalarını değiştirirse, onları karşılaştırmanız daha kolay olacaktır. değişir.

    bakmayı unutma kaynak Kodun içinde ne ve nasıl olduğunu tam olarak anlamak için yukarıda açıklanan tüm işlevler.

    Bonus. Spam gönderici koruması

    En küçük WordPress siteleri bile sık sık spam kayıtlarına maruz kalır. Botları filtrelemek için sonsuz koşullar yazabilirsiniz, genellikle daha çok yapay zeka oluşturmaya çalışmak gibi 🙂 Çoklu site durumunda, Apache'deki olağan yönlendirme bana çok yardımcı oldu, bununla birlikte /wp-signup.php ve /wp-'yi açarken acitvate.php, 404 istedim (Apache konfigürasyonu konusunda uzman değilim, bu yüzden kurallarım çok doğru olmayabilir).

    RewriteBase'de RewriteEngine / RewriteRule ^ wp-signup \ .php - RewriteRule ^ wp-activate \ .php - # BEGIN WordPress # Varsayılan olarak WordPress kurallarına dokunmayın :) # ... # WordPress'i Bitir

    P. S. Bazı üçüncü şahıslara ait şeyleri mümkün olduğunca ayrıntılı bir şekilde açıklamaya çalışıyorum, çünkü başladığımda bazen birçok şeyi soracak ve açıklayacak kimse yoktu. Ayrıca, diğer materyallerle ilgili bu tür küçük ipuçlarının, birini yeni bir şeyler öğrenmeye ve bilgi alanlarını genişletmeye iteceğine inanıyorum. RewriteRule girişleri kullanımı düzenli ifadeler, hiç karmaşık değiller, örneğin, ^ sembolü bir satırın başlangıcı anlamına gelir.