WordPress multisite-da o'z ro'yxatdan o'tish sahifangizni qanday yaratishingiz mumkin. Qanday qilib WordPress-da ko'p saytli ro'yxatdan o'tish sahifasini yaratish mumkin. Tasdiqlanmagan ro'yxatdan o'tish php rid

So'nggi bir necha yil ichida veb-xosting keskin o'zgarishlarga duch keldi. Veb-xosting xizmatlari veb-saytlarning ishlash usulini o'zgartirdi. Xizmatlarning bir nechta turlari mavjud, ammo bugun biz reseller hosting provayderlari uchun mavjud variantlar haqida gaplashamiz. Bular Linux Reseller Hosting va Windows Reseller Hosting. Ikkala o'rtasidagi asosiy farqlarni tushunishdan oldin, keling, sotuvchi hosting nima ekanligini bilib olaylik.

Reseller hosting

Oddiy qilib aytganda, reseller xostingi veb-xostingning bir shakli bo'lib, unda akkaunt egasi o'zining qattiq diskdagi ajratilgan maydoni va ajratilgan tarmoqli kengligidan uchinchi tomon veb-saytlariga qayta sotish uchun foydalanishi mumkin. Ba'zida sotuvchi xosting kompaniyasidan (Linux yoki Windows) maxsus serverni ijaraga olishi va uni uchinchi shaxslarga berishi mumkin.

Ko'pgina veb-sayt foydalanuvchilari Linux yoki Windows bilan ishlaydi. Bu ish vaqti bilan bog'liq. Ikkala platforma ham veb-saytingizning 99% yuqori bo'lishini ta'minlaydi.

1. Shaxsiylashtirish

Linux Reseller Hostingplani va Windows tomonidan taqdim etilgani o'rtasidagi asosiy farqlardan biri xususiylashtirishdir. Ikkala o'yinchi bilan bir necha usulda tajriba o'tkazishingiz mumkin bo'lsa-da, Linux Windows-ga qaraganda ancha moslashtirilgan. Ikkinchisi hamkasbiga qaraganda ko'proq xususiyatlarga ega va shuning uchun ko'plab ishlab chiquvchilar va ma'murlar Linuxni mijozlar uchun juda qulay deb bilishadi.

2. Ilovalar

Turli reseller hosting xizmatlarida turli xil ilovalar mavjud. Linux va Windows-ning ikkalasi ham o'ziga xos ilovalar qatoriga ega, ammo ikkinchisi raqamlar va ko'p qirrali bo'lganida ustunlikka ega. Bu Linuxning ochiq manba tabiati bilan bog'liq. Har qanday dasturchi o'z ilovasini Linux platformasiga yuklashi mumkin va bu uni millionlab veb-sayt egalari uchun jozibali hosting provayderiga aylantiradi.

Biroq, shuni yodda tutingki, agar Siz veb-xosting uchun Linuxdan foydalanish, lekin bir vaqtning o'zida Windows OS dan foydalanish, ba'zi ilovalar oddiygina ishlamasligi mumkin.

3. Barqarorlik

Ikkala platforma ham barqaror bo'lsa-da, Linux Reseller Hosting ikkalasidan ham barqarorroq. Bu ochiq kodli platforma bo'lib, bir nechta muhitda ishlashi mumkin. Bu platforma vaqti-vaqti bilan o'zgartirilishi va rivojlanishi mumkin.

4. .NET mosligi

Linux Windows-dan har tomonlama ustun emas. .NET mosligi haqida gap ketganda, Windows diqqat markazini o'g'irlaydi. Veb-ilovalarni Windows hosting platformasida osongina ishlab chiqish mumkin.

5. Xarajatlarning afzalliklari

Ikkala hosting platformasi ham hamyonbop. Ammo agar siz naqd pul tanqisligini his qilsangiz, Linuxni tanlashingiz kerak. Bu bepul va shuning uchun uni butun dunyo bo'ylab ko'plab ishlab chiquvchilar va tizim ma'murlari tanlaydi.

6. O'rnatishning qulayligi

Windows-ni o'rnatish hamkasbiga qaraganda osonroq. Barcha aytilgan va bajarilgan narsalar, Windows bu yillar davomida foydalanuvchi uchun qulayligini saqlab qoladi.

7. Xavfsizlik

Linux reseller xostingini tanlang, chunki u Windowsga qaraganda xavfsizroq. Bu, ayniqsa, elektron tijorat bilan shug'ullanadigan odamlar uchun to'g'ri keladi.

Xulosa

Ikkisi orasidan tanlashsizning talabingizga va xarajatlarning moslashuvchanligiga bog'liq bo'ladi. Ikkala hosting xizmati ham o'ziga xos afzalliklarga ega. Windows-ni sozlash oson bo'lsa-da, Linux tejamkor, xavfsiz va ko'p qirrali.



Shu yilning mart oyida men media kompaniyasining menga pul to'lashdan va elektron xatlarimga javob berishdan bosh tortishi bilan juda yomon tajribaga ega bo'ldim. Ular hali ham menga minglab dollar qarzdor va menda har kuni g'azab hissi paydo bo'ladi. Ma'lum bo'lishicha, men yolg'iz emasman va boshqa yuzlab veb-sayt egalari bir xil qayiqda. Bu raqamli reklama kursi uchun bir xil darajada.

Rostini aytsam, bu blogga anchadan beri egaman va o‘tmishda turli reklama tarmoqlarini aylanib chiqdim. Meni qo‘zg‘atgan kompaniyadan reklama birliklarini olib tashlaganimdan so‘ng, yana birinchi o‘ringa qaytdim. Shuni ham ta’kidlashim kerakki, Menga hech qachon Googles AdSense mahsuloti yoqmagan, chunki u ko'rgazmali reklamalarning "barrelining pastki qismi"dek tuyuladi. Sifat nuqtai nazaridan emas, balki daromad nuqtai nazaridan.

Men tushunganimdek, siz o'z saytingizda Google reklamasini xohlaysiz, lekin siz boshqa yirik kompaniyalar va agentliklar ham buni qilishni xohlaysiz. Shunday qilib, siz talab va daromadni maksimal darajada oshirasiz.

Salbiy tajribamdan keyin men Newor Media deb nomlangan kompaniyani tavsiya qildim. Rostini aytsam, avvaliga ular haqida ko'p ma'lumot topa olmaganim uchun sotilmadim. Boshqa saytlarda men bir nechta yaxshi sharhlarni topdim va u erda kimdir bilan gaplashganimdan so'ng, men buni sinab ko'rishga qaror qildim. .Aytishim kerakki, ular SUPER foydalidir. Men ishlagan har bir tarmoq men bilan javob berish va davom etish borasida juda qisqa bo'ldi. Ular har bir savolga javob berishdi va bu haqiqatan ham dalda beruvchi jarayon edi.

Men bir necha oydan beri reklamalarni olib borayapman va daromadlar boshqa kompaniyada qilgan ishimga mos keladi. Shuning uchun ular boshqalardan ancha yaxshimi yoki yo'qligini ayta olmayman, lekin ular qayerda ajralib turadi? Men haqiqatan ham aytmoqchi bo'lgan nuqta. Ular bilan aloqa men ishlagan boshqa tarmoqlarga o'xshamaydi. Mana, ular haqiqatan ham farq qiladigan holat:

Ular menga Paypal bilan birinchi to'lovni o'z vaqtida berishdi. Lekin men AQSHda boʻlmaganim uchun (va bu hamma uchun sodir boʻladi, deb oʻylayman), men Paypaldan toʻlov oldim. Bu haqda oʻz vakilimga elektron pochta orqali xabar yubordim va kelajakda bundan qochishning yoʻli bormi, deb soʻradim.

Ular to'lovdan qochib qutula olmasliklarini aytishdi, lekin ular BARCHA TO'LOVLARNI QO'LLANISHNI.... ENG SO'NGI TO'LOVNI JUDA! Nafaqat bu, balki kompensatsiya to'lovi 10 MINUTES ichida qabul qilindi! Qachon bormisiz"moliya bo'limi" ga yuborilmasdan, hech qachon javob berilmasdan shunday so'rov yuborishga muvaffaq bo'lgan.

Xulosa shuki, men bu kompaniyani yaxshi ko'raman. Men boshqa joyda ko'proq ishlay olishim mumkin, men aniq bilmayman, lekin ular men bilan umrbod nashriyotga ega. Men katta sayt emasman va men bir tonna daromad keltirmayman, lekin o'zimni shunday his qilaman Men ular bilan gaplashganimda juda muhim mijoz. Bu firibgarlik va javob bermaslik bilan rivojlangan sanoatda chinakam toza havo nafasi.

2012-yilda Raspberry Pi fondi tomonidan yaratilgan mikrokompyuterlar yosh bolalarda ijodkorlik darajasini oshirishda katta muvaffaqiyatlarga erishdi va Buyuk Britaniyada joylashgan ushbu kompaniya pi-top va Kano kabi kodlashni o‘rganish bo‘yicha startap dasturlarini taklif qila boshladi. Hozirda Pi elektronikasidan foydalanadigan yangi startap paydo bo'ldi va qurilma Pip nomi bilan tanilgan, sensorli ekran, bir nechta portlar, boshqaruv tugmalari va dinamiklarni taklif qiluvchi qo'l konsoli. Qurilmaning g'oyasi yosh odamlarni retro o'yin qurilmasi bilan jalb qilishdir, ammo veb-platforma orqali kodni o'rganish tajribasini taklif qiladi.

Pip bilan taklif qilinadigan ajoyib dasturiy platforma Python, HTML/CSS, JavaScript, Lua va PHP-da kodlashni boshlash imkoniyatini beradi. Qurilma bolalarni kodlashni boshlash uchun bosqichma-bosqich qo'llanmalarni taklif qiladi va ularga hatto LEDlarni miltillash imkonini beradi. Pip hali ham prototip bo'lsa-da, u, albatta, sohada katta hit bo'ladi va kodlashga qiziqqan bolalarni jalb qiladi va ularni yoshligida kodlashni boshlash uchun zarur bo'lgan ta'lim va resurslar bilan ta'minlaydi.

Kodlashning kelajagi

Kodlashning kelajagi katta va agar bolalar kodlashni martaba sifatida ishlatmasalar ham, ular ushbu yangi qurilma yordamida kodlashni har qachongidan ham osonlashtiradigan o'rganishdan foyda olishlari mumkin. Pip yordamida hatto eng yosh kodlash ishqibozlari ham turli tillarni o'rganadilar va o'z kodlari, shaxsiy o'yinlari, shaxsiy ilovalari va boshqalarni yaratishda yaxshi yo'lda bo'lishadi. Bu elektron davrning kelajagi va Pip kodlashning asosiy qurilish bloklarini o'zlashtirishga imkon beradi.
Kompyuter fanlari ta'limning muhim qismiga aylandi va yangi Pip kabi qurilmalar yordamida bolalar dam olish vaqtida uyda o'z ta'limini oshirishni boshlashlari mumkin. Kodlash shunchaki veb-saytlar yoki dasturiy ta'minot yaratishdan tashqarida. U shaharda xavfsizlikni yaxshilash, tibbiyot sohasidagi tadqiqotlarga yordam berish va boshqalar uchun ishlatilishi mumkin. Biz hozirda dasturiy ta'minot hukmron bo'lgan dunyoda yashayotganimiz sababli, kodlash - bu kelajak va barcha bolalar uchun hech bo'lmaganda bu ko'nikmalardan martaba sifatida foydalanmasalar ham, uning qanday ishlashi haqida asosiy tushunchaga ega bo'lishlari muhimdir. Kelajakda kodlash kundalik hayotning muhim tarkibiy qismi bo'ladi. Bu dunyo tili bo'ladi va kompyuterlarni yoki ularning qanday ishlashini bilmaslik savodsizlik kabi engish qiyin bo'lgan muammolarni keltirib chiqarishi mumkin.
Kodlash, shuningdek, o'yin dunyosida katta o'zgarishlarni ta'minlaydi, ayniqsa, onlayn o'yinlar haqida gap ketganda, shu jumladan onlayn kazinolarga kirish. Kodlash o'yin dunyosini qanday yaxshilaganini ko'rish uchun kodlashga tayanadigan bir necha yuqori baholangan kazino saytlarini ko'rib chiqing. Buni tekshirish uchun tez ko'z tashlang va kodlash onlaynda real muhitni qanday taqdim etishini ko'ring.

Pip bolalarni qanday jalb qiladi

Kodlashni o'rganish imkoniyati haqida gap ketganda, bolalar juda ko'p imkoniyatlarga ega. Sotib olish mumkin bo'lgan bir qator qurilmalar va apparat gizmoslari mavjud, ammo Pip o'z qurilmasiga boshqacha yondashadi. Qurilmaning portativligi va sensorli ekrani bozorda mavjud bo'lgan boshqa kodlash qurilmalariga ustunlik beradi. Pip Raspberry Pi HAT tizimiga qo'shimcha ravishda elektron komponentlar bilan to'liq mos keladi. Qurilma standart tillardan foydalanadi va asosiy vositalarga ega va har qanday boshlang'ich koder uchun mukammal qurilmadir. Maqsad - g'oya va ijod o'rtasidagi har qanday to'siqlarni olib tashlash va vositalarni darhol foydalanishga topshirish. Pip-ning yana bir ajoyib afzalliklaridan biri shundaki, u SD-kartadan foydalanadi, shuning uchun u monitor va sichqonchaga ulanganda ish stoli kompyuter sifatida ham foydalanish mumkin.
Pip qurilmasi bolalar va qiziqqan yangi koderlarga kodlashni o'rganish va mashq qilishda ishtiyoq bilan yordam beradi. Muammolarni hal qilish uchun vazifani bajarish va tinkerlik kombinatsiyasini taklif qilish orqali qurilma, albatta, yosh avlodni jalb qiladi. Keyin qurilma ushbu yosh koderlarga JavaScript va HTML/CSS kabi turli tillarda kodlashning ilg'or darajalariga o'tish imkonini beradi. Qurilma o'yin konsolini takrorlagani uchun u darhol bolalarning e'tiborini tortadi va ularni yoshligida kodlashni o'rganishga jalb qiladi. Bundan tashqari, Pac-Man va Minecraft kabi diqqatni jalb qilish uchun oldindan yuklangan o'yinlar bilan birga keladi.

Kelajakda innovatsiyalar

Kelajakdagi innovatsiyalar ko'p jihatdan bolaning hozirgi kodlash qobiliyatiga va jarayonni umumiy tushunishiga bog'liq. Bolalar yangi Pip kabi qurilmalar yordamida kodlashni erta yoshda o‘rganar ekan, ular kelajakda ajoyib narsalarni yaratish uchun ko‘nikma va bilimga ega bo‘ladilar. Bu yangi o'yinlar yoki ilovalarning kiritilishi yoki hatto tibbiy tadqiqotlar va davolanishda yordam beradigan g'oyalar bo'lishi mumkin. Cheksiz imkoniyatlar mavjud. Bizning kelajagimiz dasturiy ta'minot va kompyuterlar tomonidan boshqarilishi sababli, yoshdan boshlash eng yaxshi yo'ldir, shuning uchun yangi Pip yosh olomonga qaratilgan. Kodlash ko'nikmalarini o'rgatish bilan birga o'yin o'ynashi mumkin bo'lgan konsol qurilmasini taklif qilish orqali jamiyatning yosh a'zolari kelajakda butun hayotimizni o'zgartiradigan dasturiy ta'minot yaratuvchisi bo'lish yo'lida yaxshi yo'lda. Bu hali boshlanishi, lekin butun dunyo bo'ylab millionlab bolalar o'rganishni va o'zlashtirishni boshlaydigan narsadir. Pip kabi qurilmalardan foydalanish bilan kodlash asoslari qamrab olinadi va bolalar balog'at yoshiga etganida ajoyib yo'llarga olib kelishi mumkin bo'lgan turli kodlash tillarini tezda o'rganadilar.

Biz standart wp-signup.php o'rniga multisite uchun o'z ro'yxatga olish sahifamizni yaratamiz.

Oddiy WordPress o'rnatilishida ro'yxatdan o'tish sahifasi (login, parolni tiklash) wp-login.php fayli tomonidan chiqariladi.

  • /wp-login.php - avtorizatsiya
  • /wp-login.php?action=register - ro'yxatdan o'tish
  • /wp-login.php?action=lostpassword - parolni tiklash

wp-login.php da multisite uchun alohida shartlar mavjud. Shunday qilib, ko'p saytdagi /wp-login.php?action=register havolasiga amal qilganingizda, WordPress /wp-signup.php sahifasiga yo'naltiriladi. Ko'pgina mavzular sahifani juda jozibali ko'rsatmaydi, shuning uchun biz o'zimiznikilarni yaratamiz.

Tarmoqning asosiy sayti

Odatiy bo'lib, WordPress tarmoqning asosiy domenida (saytda) ro'yxatdan o'tish sahifasini (wp-signup.php) ochadi. Biroq, tarmoqdagi har bir sayt uchun turli mavzularga ega bo'lsa ham, alohida ro'yxatdan o'tish sahifasini yaratishingiz mumkin. Biz tarmoqdagi barcha saytlar o'z ro'yxatga olish sahifasiga ega bo'lgan, lekin bir xil mavzu ishlatilgan va saytlar faqat tilda farq qiladigan holatni ko'rib chiqamiz. Agar siz turli mavzulardan foydalansangiz, ko'proq kod yozishingiz kerak bo'ladi.

functions.php?

Yo'q. Ushbu fayl nomi WordPress haqidagi har bir maqolada eslatib o'tilganga o'xshaydi. Bizning holatda, ro'yxatga olish funksiyasi bir nechta saytlar uchun mo'ljallanganligini hisobga olsak, uni har qanday sayt ochilganda yuklanadigan MU plaginlariga kiritish mantiqan.

Lirik chekinish

Shuni ta'kidlash kerakki, MU plaginlari oddiy plaginlardan oldin va WordPress yadrosi to'liq yuklanishidan oldin yuklanadi, shuning uchun ba'zi funktsiyalarni chaqirish PHPda halokatli xatolarga olib kelishi mumkin. Bunday "erta" yuklash ham o'zining afzalliklariga ega. Aytaylik, biron bir mavzu ichida siz mavzudan functions.php fayli yuklanishidan oldin ham ishga tushiriladigan ba'zi harakatlarga qo'sha olmaysiz. Bunga misol sifatida jetpack_module_loaded_related-posts (related-posts - modul nomi) shaklidagi Jetpack plaginidagi harakatlar, ularning yordamida Jetpack-dagi modullarning faolligini kuzatish mumkin. Mavzu faylidan ushbu amalni "biriktirish" mumkin emas, chunki mavzu yuklanishidan oldin harakat allaqachon boshlangan - plaginlar mavzulardan oldin yuklangan. Kodeksdagi Action Reference sahifasida WordPress yuklash tartibining umumiy rasmini ko'rishingiz mumkin.

Fayl tartibi

MU plaginlari siz uchun mantiqiy ko'rinadigan istalgan sonli fayllar va tuzilmalarni o'z ichiga olishi mumkin. Men bu ierarxiyaga o'xshash narsaga yopishaman:

|-mu-plugins |-|-load.php |-|-|-selena-tarmoq |-|-|-|-ro'yxatdan o'tish |-|-|-|-|-plugin.php |-|-|-| -|-... |-|-|-|-jetpack |-|-|-|-|-plugin.php

load.php faylida tarmog'imiz uchun barcha kerakli "plaginlar" mavjud:

// Barcha qo'shimchalar uchun tarjimalarni yuklash load_muplugin_textdomain ("selena_network", "/selena-network/languages/"); // Tarmoqni ro'yxatdan o'tkazish uchun WPMU_PLUGIN_DIR talab qilinadi. "/selena-network/signup/plugin.php"; // Boshqa plaginlar // WPMU_PLUGIN_DIR talab qiladi ...

Selena-tarmoq papkasida plagin papkalari saqlanadi, ularning har biri o'z plugin.php-ga ega, biz ularni load.php-ga kiritamiz. Bu sizga moslashuvchanlik va narsalarni tezda o'chirish va yoqish qobiliyatini beradi.

Ro'yxatdan o'tish sahifasi manzili

Ro'yxatdan o'tish sahifasining manzilini belgilash uchun wp_signup_location filtridan foydalaning. Uni wp-login.php faylida topish mumkin va wp-signup.php ga yo'naltirish uchun javobgardir.

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

Funktsiyamizni mu-plugins/selena-network/signup/plugin.php ga qo'shamiz, u joriy saytdagi ro'yxatdan o'tish sahifasining manzilini qaytaradi:

Funktsiya selena_network_signup_page ($url) ( qaytish home_url () . "/signup/"; ) add_filter ( "wp_signup_location", "selena_network_signup_page", 99);

selena_network - bu to'qnashuvlarning oldini olish uchun saytimdagi MU plaginlari ichidagi barcha funksiyalar nomlarida ishlatadigan prefiks, uni o'zingizning noyob prefiksingiz bilan almashtirish kerak. Filtrni qo'shishning ustuvorligi - 99, chunki ba'zi plaginlar, masalan, bbPress va BuddyPress, bu manzilni o'zlari bilan qayta yozishi mumkin (MU plaginlari oddiy plaginlarga qaraganda tezroq yuklanadi, yuqoriga qarang). E'tibor bering, mehmonni bir xil domenda ushlab turish uchun network_site_url() o'rniga home_url() ishlatiladi. Har qanday URL manzil sifatida ishlatilishi mumkin.

Sahifa yaratish

Endi oddiy interfeys orqali site.com/signup/ manzilli sahifa yaratamiz va bolalar mavzusi papkasida yangi sahifamiz uchun shablon page-signup.php hisoblanadi. "Ro'yxatdan o'tish" so'zi o'rniga siz noyob identifikatordan foydalanishingiz mumkin.

Yangi shablon ichida siz ro'yxatdan o'tish shaklini ko'rsatadigan selena_network_signup_main() funksiyasiga qo'ng'iroq qilishingiz kerak.

Shuni ta'kidlash kerakki, shablonni yaratish jarayoni ixtiyoriy va siz o'zingizning qisqa kodingizni yaratishingiz mumkin, u ham selena_network_signup_main() funktsiyasini chaqiradi.

wp-signup.php va wp-activate.php

Endi ro'yxatdan o'tish formasini ko'rsatadigan funksiya yaratamiz. Buning uchun WordPress ildizidan wp-signup.php va wp-activate.php fayllarini mu-plugings/selena-network/signup/ ga ko'chiring (va ularni mu-plugins/selena-network ichiga ulashni unutmang. /signup/plugin.php). Fayllar bilan keyingi manipulyatsiyalarni tasvirlash juda qiyin va uzoq, shuning uchun ularni o'zingiz qilishingiz kerak bo'ladi. Men faqat nima qilish kerakligini tasvirlab beraman va loyihamning manba fayllarini nashr etaman:

  1. Fayl boshida barcha talablarni, funksiya chaqiruvlarini va funktsiyalardan tashqari boshqa kodlarni olib tashlang.
  2. Nomlarga noyob prefikslarni qo'shish orqali barcha funktsiyalarni qayta nomlang.
  3. wp-signup.php kodining pastki qismini selena_network_signup_main funksiyasiga o'rang va eng boshida global $active_signup yozing; .
  4. To'g'ri joylarda tartibni o'zingiz bilan almashtiring.

Wp-activate.php ichida siz taxminan bir xil narsani qilishingiz kerak:

  1. Funktsiyalardan tashqaridagi barcha kodlarni olib tashlang, tartibni alohida funktsiyaga o'rang.
  2. Zarur bo'lgan joylarda tartibni o'zgartiring.

Wp-activate.php fayli hisobni faollashtirish sahifasi uchun javobgardir. Ro'yxatdan o'tish sahifasida bo'lgani kabi, buning uchun alohida shablon yaratishingiz kerak, uning ichida wp-activate.php faylidan funktsiyani chaqirishingiz kerak.

Faollashtirish xatlarini yuborish

Ro'yxatdan o'tish sahifasi tashrif buyuruvchiga o'z hisobini faollashtirish uchun havola bilan elektron pochta xabarini yuboradi. Odatiy bo'lib, bu ms-functions.php faylidagi wpmu_signup_user_notification() funksiyasi tomonidan amalga oshiriladi. Siz o'zingizning funksiyangiz uchun uning funksionalligini qarzga olishingiz mumkin. Ushbu xususiyatdan foydalanishdan qochishning sababi shundaki, u hisobni faollashtirish havolasini wp-activate.php dan yuboradi. Siz ushbu funktsiyani wpmu_signup_user_notification filtri yordamida "o'chirib qo'yishingiz" mumkin, bu esa uni noto'g'ri deb qaytaradi (agar bu bajarilmasa, faollashtirish xati ikki marta yuboriladi, yaxshi, aslida ikki xil harf).

Funktsiya armyofselenagomez_wpmu_signup_user_notification($user, $user_email, $key, $meta = array()) ( // ... // wpmu_signup_user_notification() funksiyasidan kod wp_mail($user_email, wp_specialchars_decode($subject, $subjecters) ; return false; ) add_filter("wpmu_signup_user_notification", "armyofselenagomez_wpmu_signup_user_notification", 10, 4);

Natijada, Selena mavzusidagi ro'yxatdan o'tish sahifasi ancha toza va toza ko'rinishni boshladi.

Xulosa

Xuddi shu narsani qilishning Internetda juda ham to'g'ri bo'lmagan boshqa ko'plab usullari mavjud - Apache yo'naltirishlari, Java skriptisiz ishlamaydigan AJAX shakllari va boshqalar. Bularning barchasi menga yoqmadi, shuning uchun men buni xuddi shunday to'g'ri qilishga harakat qildim. o'z veb-saytimda mumkin.

Shuni ta'kidlaymanki, siz fayllarni ehtiyotkorlik bilan tahrirlashingiz va asl nusxasidan juda ko'p chetga chiqmaslikka harakat qilishingiz kerak, shunda kelajakda WordPress wp-signup.php va wp-activate.php fayllarini o'zgartirsa, solishtirish osonroq bo'ladi. o'zgarishlarni topish uchun ularni bir-biri bilan.

Kod ichida nima va qanday sodir bo'layotganini to'liq tushunish uchun yuqorida tavsiflangan barcha funktsiyalarning manba kodiga qarashni unutmang.

Bonus. Spamerlardan himoya

Hatto eng kichik WordPress saytlari ham ko'pincha spam ro'yxatdan o'tish bilan bog'liq. Siz botlarni filtrlash uchun cheksiz shartlarni yozishingiz mumkin, bu ko'pincha sun'iy intellekt yaratishga urinish kabi :) Multisite bo'lsa, Apache-da muntazam qayta yo'naltirish menga juda yordam berdi, uning yordamida men ochishda 404 so'radim. wp-signup.php va /wp-acitvate.php (Men Apache-ni sozlash bo'yicha mutaxassis emasman, shuning uchun mening qoidalarim unchalik to'g'ri bo'lmasligi mumkin).

RewriteEngine on RewriteBase / RewriteRule ^wp-signup\.php - RewriteRule ^wp-activate\.php - # BEGIN WordPress # Biz WordPress qoidalariga sukut bo'yicha tegmaymiz :) # ... # END WordPress

P.S. Men uchinchi tomonning ba'zi narsalarni iloji boricha batafsil tasvirlashga harakat qilaman, chunki men boshlaganimda ba'zida ko'p narsalarni taklif qiladigan va tushuntiradigan hech kim yo'q edi. Boshqa materiallar bo'yicha bunday kichik maslahatlar kimnidir yangi narsalarni o'rganishga va bilim doirasini kengaytirishga undaydi, deb ishonaman. RewriteRule yozuvlarida oddiy iboralar ishlatiladi, ular umuman murakkab emas, masalan, ^ belgisi qatorning boshlanishini bildiradi.

Bir vaqtning o'zida bir nechta saytlar uchun bitta WordPress o'rnatilishidan foydalanishga imkon beradi. Bunday holda, har bir sayt ma'lumotlar bazasida o'ziga xos prefiks bilan o'z jadvallarini oladi.

Ro'yxatdan o'tgan foydalanuvchilar ma'lumotlari bilan jadvallar tarmoqdagi barcha saytlar uchun umumiydir. Bu aniq ortiqcha va bir marta ro'yxatdan o'tish orqali siz bir nechta saytlarga kirishingiz mumkin. Bundan tashqari, har bir saytda bir xil hisob turli huquqlarga ega bo'lishi mumkin. Masalan, bir saytda foydalanuvchi muharrir, boshqasida esa administrator bo'lishi mumkin.

Oddiy WordPress o'rnatilishida ro'yxatdan o'tish, login va parolni tiklash sahifasi wp-login.php fayli tomonidan chiqariladi.

  • wp-login.php - avtorizatsiya
  • wp-login.php?action=register - ro'yxatdan o'tish
  • wp-login.php?action=lostpassword - parolni tiklash

Multisite rejimida WordPress yadrosi biroz boshqacha harakat qila boshlaydi va wp-login.php?action=register havolasiga amal qilganingizda, wp-signup.php ga yo'naltirish sodir bo'ladi. Bu sukut bo'yicha WordPress bilan birga keladigan tarmoq ro'yxatga olish sahifangiz.

Oddiy foydalanuvchi hisoblarini ro'yxatdan o'tkazishdan tashqari, agar super-administrator tarmoq sozlamalarida ushbu xususiyatni yoqgan bo'lsa, unda yangi veb-sayt yaratishingiz mumkin (Tarmoq ma'muri → Sozlamalar → Tarmoq sozlamalari).

Ko'pgina mavzularda ro'yxatdan o'tish sahifasi unchalik yaxshi ko'rinmaydi. Ko'pgina mavzular sahifalardagi turli elementlarni uslublash uchun Bootstrap kabi CSS ramkalaridan va o'zlarining shaxsiy sinflaridan foydalanadi, shuning uchun hamma uchun mos keladigan bitta HTML yozish qiyin.

Ammo agar sahifa tartibsiz ko'rinsa, umidsizlikka tushmang. Wp-signup.php fayli avvaliga ajoyib narsa bo'lib, saytning har bir tafsilotini ko'rib chiqishga vaqtingiz yo'q bo'lganda - siz boshqa muhimroq sahifalar va kontentga e'tibor qaratishingiz mumkin.

O'zingizning ro'yxatdan o'tish sahifangizni yaratishga tayyor bo'lsangiz, wp-signup.php WordPress foydalanuvchi ma'lumotlarini qayta ishlash va tasdiqlash hamda yangi hisoblar yaratish uchun taqdim etadigan xususiyatlar qatorini tushunishga yordam beradigan yaxshi namunadir.

Tarmoqning asosiy sayti

Odatiy bo'lib, WordPress tarmoqning asosiy domenida (saytda) ro'yxatdan o'tish sahifasini (wp-signup.php) ochadi. Biroq, tarmoqdagi har bir sayt uchun, hatto mavzular bo'lsa ham, ro'yxatdan o'tish sahifalarini yaratishingiz mumkin.

Biz tarmoqdagi barcha saytlar bir xil mavzuni ishlatganda, lekin ularning har birida ro'yxatdan o'tish sahifasi mavjud bo'lgan vaziyatni ko'rib chiqamiz. Saytlar tilda (ingliz va rus) farqlanadi, shuning uchun ro'yxatdan o'tish sahifasi saytning "ona" tilida ko'rsatiladi. Agar saytlar turli mavzulardan foydalansa, hamma narsa ular qanday mavzularga bog'liq bo'ladi, bir xil tartib ularga mos keladimi (sizni barcha mavzularingizni birlashtirishga undaydigan ajoyib holat) yoki sahifalarni alohida ishlab chiqishga arziydimi.

functions.php ga muqobil

Fayl tartibi

MU plaginlari siz uchun mantiqiy ko'rinadigan istalgan sonli fayllar va tuzilmani o'z ichiga olishi mumkin. Men bu ierarxiyaga o'xshash narsaga yopishaman:

| mu-plugins | | load.php | | selena-tarmoq | | | ro'yxatdan o'tish | | | | plugin.php | | | ... | | | jetpack | | | | plugin.php

load.php faylida tarjimalar va barcha kerakli "plaginlar" mavjud:

// MU plaginlari uchun tarjimalar yuklanmoqda load_muplugin_textdomain("selena_network", "/selena-network/languages/"); // Ro'yxatdan o'tish sahifasining funksionalligi WPMU_PLUGIN_DIR ni talab qiladi. "/selena-network/signup/plugin.php"; // Boshqa plagin // WPMU_PLUGIN_DIR talab qiladi ...

Plagin papkalari selena-tarmoq katalogida saqlanadi. Har birida o'z plugin.php bor, biz uni load.php ga kiritamiz. Bu sizga favqulodda vaziyatlarda ish loyihasidagi alohida komponentlarni bir zumda o'chirish va yoqish uchun moslashuvchanlik va qobiliyatni beradi.

Ro'yxatdan o'tish sahifasi

Kodni qayerda va qanday yozishimizni aniqlab, biz ro'yxatga olish sahifasini yaratishga o'tishimiz mumkin.

Oddiy interfeys orqali example.org/signup/ manzilli sahifa yarataylik. Loyihangizga mos keladigan har qanday URL manzilidan foydalanishingiz mumkin.

Kerakli ro'yxatdan o'tish sahifasiga yo'naltiring

WordPress bizning yangi roʻyxatdan oʻtish sahifamiz haqida bilib olishi va aynan unga yoʻnaltirilishi uchun “Roʻyxatdan oʻtish” havolasini bosganingizda, wp_signup_location filtridan foydalaniladi. Uni wp-login.php ichida topish mumkin va sukut bo'yicha wp-signup.php ga yo'naltirish uchun javobgardir.

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

Esingizda bo'lsa, sukut bo'yicha ro'yxatga olish sahifasi tarmoqning asosiy domenida ochiladi. Shuning uchun bu erda network_site_url() ishlatiladi.

Keling, mu-plugins/selena-network/signup/plugin.php-dagi filtrga ishlov beruvchimizni qo'shamiz, u joriy saytdagi ro'yxatdan o'tish sahifasining manzilini qaytaradi:

Funktsiya selena_network_signup_page($url) ( return home_url("ro'yxatdan o'tish"); ) add_filter("wp_signup_location", "selena_network_signup_page", 99);

selena_network - bu to'qnashuvlarning oldini olish uchun saytimdagi MU plaginlari ichidagi barcha funksiyalar nomlarida ishlatadigan prefiks, uni o'zingizning noyob prefiksingiz bilan almashtirish kerak. Filtrni qo'shishning ustuvorligi - 99, chunki ba'zi plaginlar, masalan, bbPress va BuddyPress bu manzilni o'zlari bilan qayta yozishi mumkin (MU plaginlari oddiy plaginlarga qaraganda tezroq yuklanadi, yuqoriga qarang).

E'tibor bering, home_url() ishlatiladi, bu network_site_url() dan farqli o'laroq, tarmoqning asosiy sayti emas, balki joriy sayt manzilini qaytaradi.

Funktsionallik wp-signup.php

wp-signup.php fayli o'z ichiga oladi katta miqdorda funktsiyalari va kodlari. Katta rasmni ko'rish uchun siz kodni katlamadan foydalanishingiz mumkin. Qoida tariqasida, ingliz tilida bu "kodni katlama" deb ataladi.

Faylning eng boshida 1 dan 80 gacha satrlar (4.1.1 versiyada) turli tekshiruvlar o'tkaziladi va sahifaning "boshlanishi" get_header() yordamida chiqariladi.

Keyinchalik, ko'plab usullar e'lon qilinadi va ular bilan ishlashni boshlashdan oldin, har bir funktsiya nima qilishini tushunishga arziydi. Ularning ko'pchiligi ko'pincha wpmu_ prefiksi bilan boshqa funktsiyalardan foydalanadi, ularning barchasi wp-includes/ms-functions.php faylida e'lon qilinadi. Ushbu bo'limni kodni o'zingiz ko'rmasdan tushunish qiyin. Quyida har qanday qiyinchiliklarga duch kelsangiz, asosiy funktsiyalarning qisqacha tavsifi keltirilgan.

  • wpmu_signup_stylesheet() - Ro'yxatdan o'tish sahifasida qo'shimcha CSS-ni chiqaradi.
  • show_blog_form() - saytni ro'yxatdan o'tkazish uchun maydonlar (manzil, ism, qidiruv tizimlari uchun ko'rinish).
  • validate_blog_form() - kiritilgan sayt manzili va sarlavhasini wpmu_validate_blog_signup() yordamida tasdiqlaydi.
  • show_user_form() - foydalanuvchini ro'yxatdan o'tkazish uchun maydonlar (login va elektron pochta manzili).
  • validate_user_form() - kiritilgan login va elektron pochta manzilini tekshirish. wpmu_validate_user_signup() yordamida pochta.
  • signup_another_blog() - saytda ro'yxatdan o'tgan foydalanuvchilar uchun show_blog_form() yordamida yangi saytlarni ro'yxatdan o'tkazish uchun maydonlar.
  • validate_another_blog_signup() - validate_blog_form() yordamida sayt manzili va sarlavhasini tekshiradi.
  • signup_user() roʻyxatga olish sahifasining maydonlarini koʻrsatish uchun asosiy funksiyadir.
  • validate_user_signup() - login va elektron pochta manzilini tekshiradi. validate_user_form() yordamida pochta.
  • signup_blog() - show_blog_form() yordamida saytning manzili, nomi va ko'rinishini kiritish uchun maydonlar (ikkinchi ro'yxatdan o'tish bosqichi).
  • validate_blog_signup() - login, elektron pochta manzilini tekshiradi. elektron pochta, manzil va veb-sayt nomi.

Wp-signup.php faylining eng pastki qismida (4.1.1-versiyadagi 646-satrdan) yuqorida tavsiflangan barcha usullardan foydalanadigan ro'yxatga olish sahifasining asosiy mantig'i joylashgan. Kodning bu qismi funksiyaga kiritilmagan. Oxirida get_footer() chaqiriladi.

wp-signup.php funksiyasidan nusxa oling

Quyida wp-signup.php ni MU plaginlariga nusxalash va “vilka”ga o'zgartirish kiritish tartibi tasvirlangan. Bu borishning eng yaxshi yo'li kabi ko'rinmasligi mumkin. Buning o'rniga, oddiy funktsiyalardan ko'ra sinflar yordamida shakllarni tekshirish va ko'rsatish uchun o'z funktsiyalaringizni noldan yozishingiz mumkin. Menimcha, wp-signup.php allaqachon sahifamiz uchun barcha kerakli mantiqqa ega, qolgani kichik o'zgarishlar qilishdir.

WordPress yangilanganda, wp-signup.php ham vaqti-vaqti bilan o'zgaradi, ammo bu sizning "vilkangizni" har bir nashr bilan sinxronlashtirishingiz kerak degani emas. Wp-signup.php ichidagi funksiyalar asosan faqat HTML chiqishi, ma'lumotlarni tekshirish, hisob qaydnomalari va saytlar yaratish va ms-functions.php da e'lon qilingan wpmu_ prefiksi bilan usullar bilan shug'ullanadi.

Keling, sahifada ro'yxatdan o'tish shaklini ko'rsatadigan funksiya yarataylik. Buni amalga oshirish uchun WordPress ildizidan wp-signup.php ni mu-plugings/selena-network/signup/ ga ko'chiring. Keling, uni mu-plugins/selena-network/signup/plugin.php) ichiga ulaymiz.

WPMU_PLUGIN_DIR talab qilinadi. "/selena-network/signup/wp-signup.php";

Keling, ko'chirilgan faylning boshidan barcha kerakli va keraksiz tekshiruvlarni olib tashlaymiz. 4.1.1 versiyada bu 1 dan 80 gacha bo'lgan barcha kodlar.

Endi biz ro'yxatga olish shaklini ko'rsatish uchun asosiy funktsiyani yaratishga tayyormiz. Buning uchun biz barcha mantiqni 646-qatordan faylning eng oxirigacha selena_network_signup_main deb nomlangan funktsiyaga o'tkazamiz. Oxirida biz ikkita qo'shimcha yopilishni olib tashlaymiz

(722 va 723-qatorlar), shuningdek get_footer() chaqiruvi.

Yangi yaratilgan selena_network_signup_main() ning boshida biz ushbu faylning boshqa barcha usullarida ishlatiladigan global faol_signup o'zgaruvchisini e'lon qilamiz. Va keling, faylning boshidanoq olib tashlagan before_signup_form hodisasiga qo'ng'iroqni qo'shamiz.

selena_network_signup_main() funksiyasi ( global $active_signup; do_action("registratsiyadan oldin_forma"); // ... )

Endi kerak bo'lgan barcha joylarda tartibni o'zgartirish qoladi va ro'yxatdan o'tish sahifasi tayyor.

Ro'yxatdan o'tish shaklining chiqishi

Bu erda kamida ikkita variant mavjud. Eng qulay usul - qisqa kod yaratish va uni oddiy muharrir orqali sahifaga joylashtirish.

// Shortcode network_signup add_shortcode yarating("tarmoq_ro'yxatdan o'tish", "selena_tarmoq_signup_main");

Ikkinchi variant esa, bolangiz mavzusi papkasida page-signup.php sahifa shablonini yaratishdir. "Ro'yxatdan o'tish" so'zi o'rniga siz sahifaga tayinlangan noyob identifikatordan foydalanishingiz mumkin. Shablon ichida kerakli tartibni qo'shing va kerakli joyda selena_network_signup_main() ga qo'ng'iroq qiling.

Natijada mening ro'yxatdan o'tish sahifam ancha yaxshi va toza ko'rindi.

Faollashtirish sahifasi

Odatiy bo'lib, WordPress ro'yxatdan o'tish jarayonini Multisite'ga ikki bosqichga ajratadi - saytda shaklni to'ldirish va elektron pochta orqali yuborilgan havolani bosish orqali hisobingizni faollashtirish. Oldingi bo'limda yaratilgan shaklni to'ldirganingizdan so'ng, WordPress hisobingizni faollashtirish uchun qisqa ko'rsatmalar va havola bilan elektron pochta xabarini yuboradi.

WordPress ildiz katalogida joylashgan wp-activate.php fayli faollashtirish sahifasini ko'rsatish uchun javobgardir. wp-activate.php ham butunlay o'zgartirilishi mumkin. Jarayon wp-signup.php uchun qilgan ishimizga o'xshaydi.

Oddiy interfeys orqali example.org/activate/ sahifasini yaratamiz. Manzil uchun sizga mos keladigan har qanday URL manzilidan foydalaning.

Keling, wp-activate.php faylini MU plaginlarimizga nusxalaymiz va uni mu-plugins/selena-network/signup/plugin.php ga ulaymiz.

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

Wp-signup.php-dan farqli o'laroq, ichida juda ko'p tarkib yo'q. Fayl bitta operatsiyani bajaradi - agar to'g'ri kalit qabul qilingan bo'lsa, hisobni faollashtiradi va xato yoki operatsiyani muvaffaqiyatli yakunlash haqida xabarni ko'rsatadi.

Keling, barcha keraksiz tekshiruvlarni olib tashlaymiz va talab qilamiz - WordPress 4.1.1 da 1 dan 69 gacha. Oxirida get_footer() chaqiruvini olib tashlaymiz. Qolgan tarkibni selena_network_activate_main() funksiyasiga o'tkazamiz.

Shunisi qiziqki, bu yerda WordPress (wp-load.php) yuklanishidan oldin doimiy WP_INSTALLING e'lon qilingan. Uning mavjudligi WordPress plaginlarini yuklamasligiga olib keladi.

Ro'yxatga olish sahifasida bo'lgani kabi, kerak bo'lganda tartibni tuzatish qoladi. Shuningdek, siz ko'rsatilgan xabarlarning matnini o'zgartirishingiz mumkin (bu holda, MU plaginlaringizning matn domenini barcha tarjimon funktsiyalariga qo'shishni unutmang; sukut bo'yicha u hech qanday joyda o'rnatilmagan).

Tayyor funksiyadan oldindan yaratilgan sahifada qisqa kod yoki bolalar mavzusidagi alohida shablon orqali foydalanish mumkin.

To'g'ri havolalar bilan faollashtirish harflari

Faollashtirish sahifasi foydalanishga tayyor, ammo WordPress bu haqda bilmaydi va wp-activate.php ga havola bilan faollashtirish xatlarini yuboradi. Wp-signup.php-dan farqli o'laroq, manzilni o'zgartirishga imkon beradigan filtr yo'q. Buning o'rniga, to'g'ri havolalar bilan elektron pochta xabarlarini yuboradigan o'z funksiyangizni yozishingiz kerak.

Ro'yxatdan o'tish sahifasida shaklni to'ldirganingizda va yuborganingizda, WordPress wpmu_signup_ chaqiradi. foydalanuvchi() yoki wpmu_signup_ blog() ro'yxatga olish turiga qarab. Ikkala funktsiya ham wp_signups jadvalida yangi yozuvni yaratadi va uni hisobni faollashtirish kalitini o'z ichiga olgan kerakli tarkib bilan to'ldiradi.

Keyinchalik, funktsiyaga qarab, wpmu_signup_ chaqiriladi foydalanuvchi _notification() yoki wpmu_signup_ blog _notification() . Ikkala funktsiya ham o'xshash funksiyalarga ega - ular faollashtirish havolasi bilan elektron pochta xabarlarini yaratadilar va jo'natadilar, lekin turli dalillarni oladilar. Ikkalasida ham hodisani "to'xtatib turish" uchun filtrlar mavjud.

Agar (! apply_filters("wpmu_signup_user_notification", $user, $user_email, $key, $meta)) false qaytarsa;

Blog yaratish bilan hisoblarni faollashtirish uchun:

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

Faqat wp_mail() orqali xatlar yuboriladigan o'z ishlovchilaringizni yozish qoladi va oxirida WordPress faollashtirish xatini ikki marta yubormasligi uchun noto'g'ri javob berishni unutmang - biri sizniki, ikkinchisi sukut bo'yicha. wp-activate.php ga havola bilan xat.

Funktsiya selena_network_wpmu_signup_user_notification($user, $user_email, $key, $meta = array()) ( // Harfning sarlavhasi, matni va sarlavhalarini yarating // ... // Xatni yuboring yoki yuborish uchun Cron vazifasini qo'shing. harf wp_mail($user_email , wp_specialchars_decode($subject), $message, $message_headers); // WordPress faollashtirish e-pochtasini ikki marta yubormasligi uchun noto'g'ri bering; ) add_filter("wpmu_signup_user_notification", "selena_network_notification", "selena_network_0",_0 );

Agar siz SMTP serveri orqali elektron pochta xabarlarini yuborsangiz yoki ro'yxatdan o'tishlar soni juda ko'p bo'lsa, darhol elektron pochta xabarlarini yubormaslik haqida o'ylashingiz kerak. Buning o'rniga WordPress Cron-dan foydalanib, Cron vazifalarini qo'shishingiz mumkin.

Biz wp-signup.php va wp-activate.php ga kirishni yopamiz

O'zingizning ro'yxatdan o'tish va faollashtirish sahifalaringizni yaratganingizdan so'ng, siz "asl nusxalarni" yopishingiz mumkin. Masalan, ro'yxatdan o'tish sahifasida to'ldirilishi kerak bo'lgan qo'shimcha maydonlar mavjud bo'lsa. Bundan tashqari, ko'plab WordPress saytlari spam ro'yxatga olinadi.

Agar siz ushbu sahifalarni ochmoqchi bo'lsangiz, Apache'dan 404 raqamini qaytarishni so'rash orqali ikkita muammoni bir amalda hal qilishingiz mumkin. Buni amalga oshirish uchun konfiguratsiya faylingizga yoki .htaccess ga bir nechta qo'shimcha RewriteRules qo'shishingiz kifoya.

RewriteEngine On RewriteBase / # Muntazam iboralarni bilish hech qachon ortiqcha bo'lmaydi :) RewriteRule ^wp-signup\.php - RewriteRule ^wp-activate\.php - # BEGIN WordPress # Biz WordPress qoidalariga sukut bo'yicha tegmaymiz :) # .. # END WordPress

Xulosa

Internetda bu va boshqa ko'plab WordPress "muammolari" uchun ko'plab echimlar mavjud. Misol uchun, ro'yxatga olish va faollashtirish sahifalarini yaratish uchun ba'zilar asl wp-signup.php va wp-activate.php ni qayta yozishni taklif qilishadi. Buni qilmaslik kerak, chunki agar siz WordPress-ni yangilasangiz, fayllarga kiritilgan barcha o'zgarishlarni yo'qotasiz, shuningdek, yadroning yaxlitligini dan foydalanib tekshira olmaysiz.

Har qanday qo'shimcha, mavzu yoki yechimni ishlab chiqishda WordPress ichida nimalar bo'layotganini tushunish uchun biroz vaqt sarflashingiz kerak. Buning uchun juda ko'p foydali disk raskadrovka vositalari mavjud.

P.S.

Yangi foydalanuvchilarga avtomatik ravishda turli rollarni belgilash uchun siz Multisite User Management plaginidan foydalanishingiz mumkin.

Maqolani o'qib bo'lgach, ro'yxatdan o'tish va faollashtirish sahifalarini yaratishda savollaringiz yoki qiyinchiliklaringiz bo'lsa, sharh qoldiring va biz albatta javob beramiz.

27.03.2015 27.03.2015

WordPress dasturchisi. Hamma narsada tartibni va yangi vositalarni tushunishni yaxshi ko'radi. Symfony komponent arxitekturasidan ilhomlangan.



  • Shuningdek o'qing: