Jinsi ya Kuunda Ukurasa Wako wa Usajili katika Multisite ya WordPress. Tunahamisha data tuli kwenye seva tofauti na kuunganisha CDN

Inakuruhusu kutumia usakinishaji mmoja wa WordPress kwa tovuti nyingi kwa wakati mmoja. Katika kesi hii, kila tovuti inapata meza zake katika hifadhidata na kiambishi awali cha kipekee.

Majedwali yenye data ya watumiaji waliosajiliwa ni ya kawaida kwa tovuti zote kwenye mtandao. Hii ni nyongeza ya uhakika na kwa kusajili mara tu unaweza kupata ufikiaji wa tovuti kadhaa. Zaidi ya hayo, kwenye kila tovuti akaunti sawa inaweza kuwa na haki tofauti. Kwa mfano, kwenye tovuti moja mtumiaji anaweza kuwa mhariri, na kwa mwingine msimamizi.

Katika usakinishaji wa kawaida wa WordPress, ukurasa wa usajili, kuingia, na kuweka upya nenosiri hutolewa na faili ya wp-login.php.

  • wp-login.php - idhini
  • wp-login.php?action=register - usajili
  • wp-login.php?action=lostpassword - kuweka upya nenosiri

Katika hali ya tovuti nyingi, msingi wa WordPress huanza kufanya kazi kwa njia tofauti kidogo na unapofuata kiungo wp-login.php?action=register, uelekezaji upya kwa wp-signup.php utatokea. Huu ni ukurasa wako wa usajili wa mtandao unaokuja na WordPress kwa chaguo-msingi.

Mbali na kusajili akaunti za mtumiaji wa kawaida, unaweza pia kuunda tovuti mpya juu yake ikiwa msimamizi mkuu amewezesha kipengele hiki katika mipangilio ya mtandao (Msimamizi wa Mtandao → Mipangilio → Mipangilio ya Mtandao).

Katika mada nyingi, ukurasa wa usajili hauonekani kuwa mzuri sana. Mandhari nyingi hutumia mifumo ya CSS kama vile Bootstrap na madarasa yao maalum ili kuunda vipengele tofauti kwenye kurasa, kwa hivyo ni vigumu kuandika HTML moja ambayo inafaa kila mtu.

Lakini usikate tamaa ikiwa ukurasa unaonekana kuwa mbaya. Faili ya wp-signup.php ni kitu kizuri mwanzoni, wakati huna muda wa kufanyia kazi kila undani wa tovuti - unaweza kuzingatia kurasa na maudhui mengine muhimu zaidi.

Ukiwa tayari kutengeneza ukurasa wako wa kujisajili, wp-signup.php ni mfano mzuri wa kukusaidia kuelewa anuwai ya vipengele vinavyotolewa na WordPress kwa ajili ya kuchakata na kuthibitisha ingizo la mtumiaji na kuunda akaunti mpya.

Tovuti kuu ya mtandao

Kwa chaguo-msingi, WordPress inafungua ukurasa wa usajili (wp-signup.php) kwenye kikoa kikuu (tovuti) cha mtandao. Hata hivyo, unaweza kuunda kurasa za usajili kwa kila tovuti kwenye mtandao wako, hata kama zina mandhari.

Tutazingatia kesi wakati tovuti zote kwenye mtandao zinatumia mandhari sawa, lakini kila mmoja wao ana ukurasa wa usajili. Tovuti hutofautiana katika lugha (Kiingereza na Kirusi), hivyo ukurasa wa usajili utaonyeshwa katika lugha ya "asili" ya tovuti. Ikiwa tovuti zitatumia mada tofauti, kila kitu kitategemea ni mandhari gani, ikiwa mpangilio sawa utawafaa (hali bora ambayo inaweza kukusukuma kuunganisha mada zako zote) au ikiwa inafaa kukuza kurasa kibinafsi.

Mbadala kwa function.php

Agizo la faili

Programu-jalizi za MU zinaweza kuwa na idadi yoyote ya faili na muundo unaoonekana kuwa wa kimantiki kwako. Ninashikamana na kitu kama hiki uongozi:

| mu-plugins | | load.php | | selena-mtandao | | | kujiandikisha | | | | programu-jalizi.php | | | ... | | | jetpack | | | | programu-jalizi.php

Faili ya load.php inajumuisha tafsiri na "programu-jalizi" zote muhimu:

// Inapakia tafsiri za programu jalizi za MU load_muplugin_textdomain("selena_network", "/selena-network/languages/"); // Utendaji wa ukurasa wa usajili unahitaji WPMU_PLUGIN_DIR . "/selena-network/signup/plugin.php"; // Programu-jalizi nyingine // inahitaji WPMU_PLUGIN_DIR ...

Folda za programu-jalizi huhifadhiwa ndani ya saraka ya mtandao wa selena. Kila mmoja ana Plugin.php yake, ambayo sisi ni pamoja na katika load.php. Hii inakupa kunyumbulika na uwezo wa kuzima papo hapo na kuwasha vipengele vya mtu binafsi kwenye mradi wa kazi iwapo kutatokea dharura.

Ukurasa wa usajili

Baada ya kujua ni wapi na jinsi gani tutaandika msimbo, tunaweza kuendelea na kuunda ukurasa wa usajili.

Hebu tuunde ukurasa na anwani example.org/signup/ kupitia kiolesura cha kawaida. Unaweza kutumia URL yoyote ambayo inaonekana inafaa kwa mradi wako.

Elekeza upya kwa ukurasa wa usajili unaotaka

Ili WordPress ipate maelezo kuhusu ukurasa wetu mpya wa usajili na kuuelekeza upya haswa, unapobofya kiungo cha "Sajili", kichujio cha wp_signup_location kinatumika. Inaweza kupatikana ndani ya wp-login.php na inawajibika kwa kuelekeza kwa wp-signup.php kwa chaguo-msingi.

Kesi "jisajili" : ikiwa (is_multisite()) ( wp_redirect(apply_filters("wp_signup_location", network_site_url("wp-signup.php")))); toka; // ...

Kama unavyokumbuka, kwa chaguo-msingi, ukurasa wa usajili unafungua kwenye kikoa kikuu cha mtandao. Hii ndiyo sababu network_site_url() inatumika hapa.

Hebu tuongeze kidhibiti chetu kwenye kichujio katika mu-plugins/selena-network/signup/plugin.php, ambayo itarudisha anwani ya ukurasa wa usajili kwenye tovuti ya sasa:

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

selena_network ni kiambishi awali ambacho mimi hutumia katika majina ya vitendakazi vyote ndani ya programu-jalizi za MU kwenye tovuti yangu ili kuepuka migongano, inapaswa kubadilishwa na kiambishi awali chako cha kipekee. Kipaumbele cha kuongeza kichujio ni 99, kwa sababu baadhi ya programu-jalizi, kwa mfano, bbPress na BuddyPress zinaweza kubatilisha anwani hii na wao wenyewe (programu jalizi za MU hupakia mapema kuliko programu-jalizi za kawaida, tazama hapo juu).

Tafadhali kumbuka kuwa home_url() inatumika, ambayo, tofauti na network_site_url(), inarudisha anwani ya tovuti ya sasa, na sio tovuti kuu ya mtandao.

Utendaji wp-signup.php

Faili ya wp-signup.php ina idadi kubwa ya kazi na kanuni. Ili kuona picha kubwa, unaweza kutumia kukunja msimbo. Kama sheria, kwa Kiingereza hii inaitwa "code folding".

Mwanzoni mwa faili, kutoka kwa mstari wa 1 hadi 80 (katika toleo la 4.1.1), ukaguzi mbalimbali hufanywa na "kuanza" kwa ukurasa ni pato kwa kutumia get_header() .

Ifuatayo, njia nyingi zinatangazwa, na kabla ya kuanza kufanya kazi nazo, inafaa kuelewa ni nini kila kazi hufanya. Wengi wao mara nyingi hutumia kazi nyingine na kiambishi awali cha wpmu_, yote ambayo yanatangazwa katika faili ya wp-includes/ms-functions.php. Sehemu hii ni ngumu kuelewa bila kuona msimbo mwenyewe. Chini ni maelezo mafupi ya kazi kuu ikiwa una matatizo yoyote.

  • wpmu_signup_stylesheet() - Inatoa CSS ya ziada kwenye ukurasa wa usajili.
  • show_blog_form() - mashamba ya usajili wa tovuti (anwani, jina, mwonekano wa injini za utafutaji).
  • validate_blog_form() - inathibitisha anwani ya tovuti iliyoingizwa na kichwa kwa kutumia wpmu_validate_blog_signup() .
  • show_user_form() - mashamba ya usajili wa mtumiaji (kuingia na barua pepe).
  • validate_user_form() - kuangalia kuingia na barua pepe iliyoingia. barua kwa kutumia wpmu_validate_user_signup() .
  • signup_another_blog() - sehemu za kusajili tovuti mpya kwa kutumia show_blog_form() kwa watumiaji ambao tayari wamesajiliwa kwenye tovuti.
  • validate_another_blog_signup() - hukagua anwani ya tovuti na kichwa kwa kutumia validate_blog_form() .
  • signup_user() ndio kazi kuu ya kuonyesha sehemu za ukurasa wa usajili.
  • validate_user_signup() - huangalia kuingia na barua pepe. barua kwa kutumia validate_user_form() .
  • signup_blog() - sehemu za kuingiza anwani, jina na mwonekano wa tovuti (hatua ya pili ya usajili) kwa kutumia show_blog_form() .
  • validate_blog_signup() - huangalia kuingia, barua pepe. barua pepe, anwani na jina la tovuti.

Chini kabisa ya faili ya wp-signup.php (kutoka mstari wa 646 katika toleo la 4.1.1) ni mantiki kuu ya ukurasa wa usajili, ambayo inatumia mbinu zote zilizoelezwa hapo juu. Sehemu hii ya msimbo haijajumuishwa kwenye chaguo la kukokotoa. Mwishowe get_footer() inaitwa.

Nakili utendakazi wa wp-signup.php

Ifuatayo itaelezea utaratibu wa kunakili wp-signup.php kwenye programu-jalizi za MU na kufanya mabadiliko kwenye "uma". Hii inaweza kuonekana kama njia bora ya kwenda. Badala yake, unaweza kuandika vitendaji vyako mwenyewe kutoka mwanzo ili kuthibitisha na kuonyesha fomu kwa kutumia madarasa badala ya utendaji wa kawaida. Kwa maoni yangu, wp-signup.php tayari ina mantiki yote muhimu kwa ukurasa wetu, kilichobaki ni kufanya mabadiliko madogo.

WordPress inaposasishwa, wp-signup.php pia hubadilika mara kwa mara, lakini hii haimaanishi kwamba itabidi ulandanishe "uma" wako na kila toleo. Vitendaji vilivyo ndani ya wp-signup.php kimsingi vinahusika tu na matokeo ya HTML, uthibitishaji wa data, kuunda akaunti na tovuti, na mbinu zilizo na kiambishi awali cha wpmu_, kilichotangazwa katika ms-functions.php, zinahusika.

Wacha tuunda kitendakazi ambacho kitaonyesha fomu ya usajili kwenye ukurasa. Ili kufanya hivyo, nakili wp-signup.php kutoka mzizi wa WordPress hadi mu-plugings/selena-network/signup/ . Hebu tuiunganishe ndani ya mu-plugins/selena-network/signup/plugin.php).

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

Wacha tuondoe ukaguzi wote unaohitajika na usio wa lazima tangu mwanzo wa faili iliyonakiliwa. Katika toleo la 4.1.1 hii ndio nambari yote kutoka kwa mstari wa 1 hadi 80.

Sasa tuko tayari kuunda kazi kuu ya kuonyesha fomu ya usajili. Ili kufanya hivyo, tutahamisha mantiki yote kutoka kwa mstari wa 646 hadi mwisho kabisa wa faili kwenye kazi inayoitwa selena_network_signup_main. Mwishoni kabisa, tutaondoa kufunga mbili za ziada

(mistari 722 na 723), na vile vile get_footer() simu.

Katika mpya iliyoundwa selena_network_signup_main() , mwanzoni kabisa tutatangaza mabadiliko ya kimataifa active_signup, ambayo hutumiwa na mbinu nyingine zote kutoka kwa faili hii. Na tuongeze simu kwa tukio la before_signup_form, ambalo tuliondoa tangu mwanzo kabisa wa faili.

Kazi selena_network_signup_main() ( kimataifa $active_signup; do_action("kabla_ya_fomu_ya_kujisajili"); // ... )

Sasa kinachobakia ni kubadilisha mpangilio katika maeneo yote ambapo ni muhimu na ukurasa wa usajili uko tayari.

Pato la fomu ya usajili

Kuna angalau chaguzi mbili hapa. Njia rahisi zaidi ni kuunda shortcode na kuiweka kwenye ukurasa kupitia mhariri wa kawaida.

// Unda msimbo fupi wa kujisajili kwa mtandao add_shortcode("usajili_wa_mtandao", "selena_network_signup_main");

Chaguo la pili ni kuunda kiolezo cha ukurasa page-signup.php katika folda ya mandhari ya mtoto wako. Badala ya neno "jisajili" unaweza kutumia kitambulisho cha kipekee kilichowekwa kwenye ukurasa. Ndani ya kiolezo, ongeza mpangilio unaohitajika na upige simu selena_network_signup_main() mahali pazuri.

Kwa hivyo, ukurasa wangu wa usajili ulionekana bora zaidi na safi.

Ukurasa wa uanzishaji

Kwa chaguomsingi, WordPress inagawanya mchakato wa usajili katika Multisite katika hatua mbili - kujaza fomu kwenye tovuti na kuwezesha akaunti yako kwa kubofya kiungo kilichotumwa katika barua pepe. Baada ya kujaza fomu iliyoundwa katika sehemu iliyotangulia, WordPress hutuma barua pepe iliyo na maagizo mafupi na kiungo cha kuwezesha akaunti yako.

Faili ya wp-activate.php iliyoko kwenye saraka ya mizizi ya WordPress inawajibika kwa kuonyesha ukurasa wa kuwezesha. wp-activate.php pia inaweza kubadilishwa kabisa. Mchakato ni sawa na kile tulichofanya tayari kwa wp-signup.php.

Wacha tuunde ukurasa wa example.org/activate/ kupitia kiolesura cha kawaida. Kwa anwani, tumia URL yoyote ambayo inaonekana inafaa kwako.

Hebu tunakili faili ya wp-activate.php kwenye programu-jalizi zetu za MU na kuiunganisha kwa mu-plugins/selena-network/signup/plugin.php.

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

Hakuna maudhui mengi ndani, tofauti na wp-signup.php. Faili hufanya operesheni moja - inawasha akaunti ikiwa ufunguo sahihi unapokelewa na kuonyesha ujumbe kuhusu kosa au kukamilika kwa mafanikio ya operesheni.

Wacha tuondoe ukaguzi wote usio wa lazima na tunahitaji - kutoka kwa mstari wa 1 hadi 69 katika WordPress 4.1.1. Mwishowe, tutaondoa get_footer() simu. Tutahamisha yaliyomo yaliyosalia kwenye kitendakazi selena_network_activate_main().

Inafurahisha kutambua kwamba hapa, kabla ya kupakia WordPress (wp-load.php), WP_INSTALLING ya mara kwa mara ilitangazwa. Uwepo wake husababisha WordPress kutopakia programu-jalizi.

Kama ilivyo kwa ukurasa wa usajili, kilichobaki ni kusahihisha mpangilio inapobidi. Unaweza pia kubadilisha maandishi ya ujumbe ulioonyeshwa (katika kesi hii, usisahau kuongeza kikoa cha maandishi cha programu-jalizi zako za MU kwa kazi zote za mtafsiri; kwa chaguo-msingi, haijasakinishwa popote).

Kazi iliyopangwa tayari inaweza kutumika kwenye ukurasa ulioundwa kabla kwa njia ya shortcode au template tofauti katika mandhari ya mtoto.

Barua za uanzishaji zilizo na viungo sahihi

Ukurasa wa kuwezesha uko tayari kutumika, lakini WordPress haijui kuihusu na bado itatuma barua pepe za kuwezesha na kiungo cha wp-activate.php. Tofauti na wp-signup.php, hakuna kichujio ambacho kingekuruhusu kubadilisha anwani. Badala yake, unahitaji kuandika kazi yako mwenyewe ambayo itatuma barua pepe na viungo sahihi.

Unapojaza na kuwasilisha fomu kwenye ukurasa wa usajili, WordPress huita wpmu_signup_ mtumiaji() au wpmu_signup_ blogu() kulingana na aina ya usajili. Kazi zote mbili huunda ingizo jipya kwenye jedwali la wp_signups, likijaza na maudhui muhimu, ambayo ni pamoja na ufunguo wa kuwezesha akaunti.

Baadaye, kulingana na chaguo la kukokotoa, wpmu_signup_ inaitwa mtumiaji _notification() au wpmu_signup_ blogu _taarifa(). Vitendaji vyote viwili vina utendakazi sawa - hutengeneza na kutuma barua pepe yenye kiungo cha kuwezesha, lakini huchukua hoja tofauti. Zote zina vichujio vya "kukatiza" tukio.

Ikiwa (! apply_filters("wpmu_signup_user_notification", $user, $user_email, $key, $meta)) itarejesha sivyo;

Ili kuwezesha akaunti kwa kuunda blogi:

Ikiwa (! apply_filters("wpmu_signup_blog_notification", $domain, $path, $title, $user, $user_email, $key, $meta)) ( rudisha sivyo; )

Kilichobaki ni kuandika vidhibiti vyako mwenyewe, ambavyo ndani yake hutuma barua kupitia wp_mail() , na mwisho kabisa, hakikisha kuwa unarudisha uwongo ili WordPress isitume barua ya uanzishaji mara mbili - moja ni yako, nyingine ni chaguo-msingi. barua yenye kiungo kwa wp-activate.php .

Kazi selena_network_wpmu_signup_user_notification($user, $user_email, $key, $meta = safu()) ( // Tengeneza kichwa, maandishi na vichwa vya herufi // ... // Tuma barua au ongeza kazi ya Cron kutuma barua wp_mail($user_email , wp_specialchars_decode($subject), $message, $message_headers); // Toa uwongo ili WordPress isitume barua pepe ya kuwezesha mara mbili irejeshe sivyo; ) add_filter("wpmu_signup_user_notification", "selena_network_wpmu_notification", 1 );

Ukituma barua pepe kupitia seva ya SMTP au idadi ya usajili ni kubwa sana, unapaswa kuzingatia kutotuma barua pepe papo hapo. Badala yake, unaweza kuongeza kazi za Cron kwa kutumia WordPress Cron.

Tunafunga ufikiaji wa wp-signup.php na wp-activate.php

Baada ya kuunda kurasa zako za usajili na kuwezesha, unaweza kutaka kufunga "asili". Kwa mfano, ikiwa kuna sehemu za ziada kwenye ukurasa wa usajili ambazo lazima zijazwe. Pia, tovuti nyingi za WordPress ziko chini ya usajili wa barua taka.

Unaweza kutatua matatizo mawili katika hatua moja kwa kuuliza Apache kurudisha 404 ikiwa utajaribu kufungua kurasa hizi. Ili kufanya hivyo, unahitaji tu kuongeza Sheria kadhaa za ziada za Andika Upya kwenye faili yako ya usanidi au .htaccess.

RewriteEngine On RewriteBase / # Maarifa ya usemi wa kawaida kamwe hayatakuwa ya kupita kiasi :) RewriteRule ^wp-signup\.php - RewriteRule ^wp-activate\.php - # ANZA WordPress # Hatugusi sheria za WordPress kwa chaguo-msingi :) # .. # MWISHO WordPress

Hitimisho

Kuna suluhisho nyingi kwa hii na "shida" zingine nyingi za WordPress kwenye Mtandao. Kwa mfano, ili kuunda kurasa za usajili na kuwezesha, baadhi hupendekeza kuandika upya wp-signup.php ya awali na wp-activate.php . Hii haipaswi kufanywa, kwa sababu ikiwa unasasisha WordPress, utapoteza mabadiliko yote yaliyofanywa kwa faili, na pia hutaweza kuangalia uadilifu wa msingi kwa kutumia.

Unapotengeneza programu jalizi, mandhari, au suluhisho lolote, unapaswa kutumia muda kidogo kuelewa kinachoendelea ndani ya WordPress. Kuna zana nyingi muhimu za kurekebisha hitilafu kwa hili.

P.S.

Ili kugawa kiotomatiki majukumu tofauti kwa watumiaji wapya, unaweza kutumia programu-jalizi ya Usimamizi wa Watumiaji wa Tovuti nyingi.

Ikiwa una maswali au shida wakati wa kuunda kurasa za usajili na uanzishaji baada ya kusoma kifungu hicho, acha maoni na hakika tutajibu.

27.03.2015 27.03.2015

Msanidi wa WordPress. Anapenda utaratibu katika kila kitu na kuelewa zana mpya. Imehamasishwa na usanifu wa sehemu ya Symfony.

  • Tunaunda ukurasa wetu wa usajili wa tovuti nyingi badala ya wp-signup.php ya kawaida.

    Katika usakinishaji wa kawaida wa WordPress, ukurasa wa usajili (kuingia, kuweka upya nenosiri) hutolewa na faili ya wp-login.php.

    • /wp-login.php - idhini
    • /wp-login.php?action=register - usajili
    • /wp-login.php?action=lostpassword - kuweka upya nenosiri

    Kuna hali tofauti kwa multisite katika wp-login.php. Kwa hivyo, unapofuata kiungo /wp-login.php?action=register kwenye tovuti nyingi, WordPress itaelekeza kwenye ukurasa /wp-signup.php. Mandhari nyingi hazifanyi ukurasa uonekane wa kuvutia sana, kwa hivyo tutautengeneza wenyewe.

    Tovuti kuu ya mtandao

    Kwa chaguo-msingi, WordPress inafungua ukurasa wa usajili (wp-signup.php) kwenye kikoa kikuu (tovuti) cha mtandao. Hata hivyo, unaweza kutengeneza ukurasa tofauti wa usajili kwa kila tovuti kwenye mtandao wako, hata kama zina mandhari tofauti. Tutazingatia kesi ambapo tovuti zote kwenye mtandao zina ukurasa wao wa usajili, lakini mandhari sawa hutumiwa na tovuti hutofautiana tu kwa lugha. Ikiwa unatumia mandhari tofauti, utahitaji kuandika msimbo zaidi.

    function.php?

    Hapana. Jina hili la faili linaonekana kutajwa katika kila nakala kuhusu WordPress. Kwa upande wetu, kutokana na kwamba utendaji wa usajili umeundwa kwa tovuti kadhaa, ni mantiki kuijumuisha kwenye programu-jalizi za MU, ambazo hupakiwa wakati tovuti yoyote inafunguliwa.

    Upungufu wa sauti

    Inafaa kumbuka kuwa programu-jalizi za MU hupakiwa kabla ya programu-jalizi za kawaida na kabla ya msingi wa WordPress kupakiwa kikamilifu, kwa hivyo kuita baadhi ya vipengele kunaweza kusababisha hitilafu mbaya katika PHP. Upakiaji huo wa "mapema" pia una faida zake. Hebu tuseme kwamba ndani ya mandhari yoyote huwezi kuambatanisha na baadhi ya vitendo vinavyoanzishwa hata kabla ya faili ya function.php kupakiwa kutoka kwa mandhari. Mfano wa hii ni vitendo kutoka kwa programu-jalizi ya Jetpack ya fomu jetpack_module_loaded_related-posts (machapisho yanayohusiana ni jina la moduli), kwa msaada ambao inawezekana kufuatilia shughuli za modules katika Jetpack. Haiwezekani "kuambatisha" kwa kitendo hiki kutoka kwa faili ya mada, kwa sababu hatua tayari imefutwa kabla ya mada kupakiwa - programu-jalizi hupakiwa kabla ya mada. Unaweza kuangalia picha ya jumla ya agizo la upakiaji la WordPress kwenye ukurasa wa Marejeleo ya Kitendo katika kodeksi.

    Agizo la faili

    Programu-jalizi za MU zinaweza kuwa na idadi yoyote ya faili na muundo wowote unaoonekana kuwa wa kimantiki kwako. Ninashikamana na kitu kama hiki uongozi:

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

    Faili ya load.php ina "plugins" zote muhimu za mtandao wetu:

    // Mzigo Hutafsiriwa kwa viongezeo vyote load_muplugin_textdomain ("selena_network", "/selena-network/languages/"); // Kujisajili kwenye Mtandao kunahitaji WPMU_PLUGIN_DIR . "/selena-network/signup/plugin.php"; // Programu-jalizi zingine // zinahitaji WPMU_PLUGIN_DIR ...

    Ndani ya folda ya selena-mtandao, folda za programu-jalizi zimehifadhiwa, kila moja na plugin.php yake, ambayo tunajumuisha katika load.php. Hii hukupa kubadilika na uwezo wa kuzima na kuwasha vitu kwa haraka.

    Anwani ya ukurasa wa usajili

    Ili kutaja anwani ya ukurasa wa usajili, tumia kichujio cha wp_signup_location. Inaweza kupatikana ndani ya faili ya wp-login.php na inawajibika kwa kuelekeza upya kwa wp-signup.php.

    Kisa "jisajili" : ikiwa (is_multisite()) ( wp_redirect(apply_filters("wp_signup_location", network_site_url("wp-signup.php")))); toka;

    Hebu tuongeze utendaji wetu kwa mu-plugins/selena-network/signup/plugin.php, ambayo itarudisha anwani ya ukurasa wa usajili kwenye tovuti ya sasa:

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

    selena_network ni kiambishi awali ambacho mimi hutumia katika majina ya vitendakazi vyote ndani ya programu-jalizi za MU kwenye tovuti yangu ili kuepuka migongano, inapaswa kubadilishwa na kiambishi awali chako cha kipekee. Kipaumbele cha kuongeza kichujio ni 99, kwa sababu baadhi ya programu-jalizi, kwa mfano bbPress na BuddyPress, zinaweza kubatilisha anwani hii na wao wenyewe (programu jalizi za MU hupakia mapema kuliko programu-jalizi za kawaida, tazama hapo juu). Kumbuka kwamba home_url() inatumika badala ya network_site_url() kuweka mgeni kwenye kikoa sawa. URL yoyote inaweza kutumika kama anwani.

    Kuunda ukurasa

    Sasa hebu tuunde ukurasa wenye anwani site.com/signup/ kupitia kiolesura cha kawaida, na katika folda ya mandhari ya mtoto kiolezo cha ukurasa wetu mpya ni page-signup.php. Badala ya neno "jisajili" unaweza kutumia kitambulisho cha kipekee.

    Ndani ya kiolezo kipya, unahitaji kupiga simu selena_network_signup_main() kitendakazi, ambacho kitaonyesha fomu ya usajili.

    Inafaa kukumbuka kuwa mchakato mzima wa kiolezo ni wa hiari na badala yake unaweza kuunda msimbo wako mfupi ambao pia utaita kitendakazi cha selena_network_signup_main().

    wp-signup.php na wp-activate.php

    Sasa hebu tuunde kitendakazi ambacho kitaonyesha fomu ya usajili. Ili kufanya hivyo, nakili faili wp-signup.php na wp-activate.php kutoka mzizi wa WordPress hadi mu-plugings/selena-network/signup/ (na usisahau kuziunganisha ndani ya mu-plugins/selena-network /signup/plugin.php) . Udanganyifu zaidi na faili ni ngumu sana na ndefu kuelezea, kwa hivyo itabidi ufanye mwenyewe. Nitaelezea kile kinachohitajika kufanywa na kuchapisha faili za chanzo cha mradi wangu:

    1. Mwanzoni mwa faili, ondoa zote zinahitaji , simu za kukokotoa na msimbo mwingine nje ya vitendaji.
    2. Badilisha jina la vitendaji vyote kwa kuongeza viambishi awali vya kipekee kwa majina.
    3. Funga sehemu ya chini ya msimbo wa wp-signup.php katika kitendakazi selena_network_signup_main na mwanzoni kabisa andika global $active_signup; .
    4. Badilisha mpangilio na wako mwenyewe katika sehemu zinazofaa.

    Ndani ya wp-activate.php unahitaji kufanya takriban kitu sawa:

    1. Ondoa msimbo wote nje ya kazi, funga mpangilio katika kazi tofauti.
    2. Badilisha mpangilio mahali ambapo inahitajika.

    Faili ya wp-activate.php inawajibika kwa ukurasa wa kuwezesha akaunti. Kama ilivyo kwa ukurasa wa usajili, unahitaji kuunda kiolezo tofauti kwake, ambacho ndani yake unahitaji kupiga kitendakazi kutoka kwa faili ya wp-activate.php.

    Kutuma barua za kuwezesha

    Ukurasa wa usajili hutuma mgeni barua pepe iliyo na kiungo ili kuwezesha akaunti yake. Kwa chaguo-msingi, hii inafanywa na kazi ya wpmu_signup_user_notification() kutoka kwa faili ya ms-functions.php. Unaweza kuazima utendakazi wake kwa kazi yako mwenyewe. Sababu ya kuepuka kutumia kipengele hiki ni kwamba hutuma kiungo cha kuwezesha akaunti kutoka kwa wp-activate.php. Unaweza "kuzima" chaguo hili la kukokotoa kwa kutumia kichujio cha arifa ya wpmu_signup_user_notification, ukirudisha uongo (ikiwa hii haijafanywa, barua ya kuwezesha itatumwa mara mbili, sawa, kwa kweli barua mbili tofauti).

    Kazi jeshiofselenagomez_wpmu_signup_user_notification($user_email, $user_email, $key, $meta = safu()) ( // ... // Msimbo kutoka kwa chaguo za kukokotoa wpmu_signup_user_notification() wp_mail($user_email, wp_specialchars_decodemessa $headers), $headers) ; rudisha uwongo; ) add_filter("wpmu_signup_user_notification", "armyofselenagomez_wpmu_signup_user_notification", 10, 4);

    Kama matokeo, ukurasa wa usajili katika mada ya Selena ulianza kuonekana safi na nadhifu zaidi.

    Hitimisho

    Kuna njia zingine nyingi ambazo sio sahihi sana kwenye Mtandao kufanya kitu kimoja - uelekezaji wa Apache, fomu za AJAX ambazo hazitafanya kazi bila Hati ya Java, nk. Sikupenda haya yote, kwa hivyo nilijaribu kuifanya kwa usahihi kama vile. inawezekana kwenye tovuti yangu mwenyewe.

    Ninakumbuka kuwa unapaswa kuhariri faili kwa uangalifu na ujaribu kutokeuka sana kutoka kwa zile za asili, ili katika siku zijazo, ikiwa WordPress itabadilisha faili za wp-signup.php na wp-activate.php, itakuwa rahisi kulinganisha. wao kwa wao ili kupata mabadiliko.

    Usisahau kuangalia msimbo wa chanzo wa kazi zote zilizoelezwa hapo juu ili kuelewa kikamilifu nini na jinsi gani kinatokea ndani ya kanuni.

    Ziada. Ulinzi kutoka kwa watumaji taka

    Hata tovuti ndogo zaidi za WordPress mara nyingi zinakumbwa na usajili wa barua taka. Unaweza kuandika hali zisizo na mwisho za kuchuja roboti, mara nyingi zaidi kama jaribio la kuunda akili ya bandia :) Katika kesi ya multisite, uelekezaji wa kawaida wa Apache ulinisaidia sana, kwa msaada ambao niliuliza 404 wakati wa kufungua / wp-signup.php na /wp-acitvate.php (mimi sio mtaalam wa kusanidi Apache, kwa hivyo sheria zangu haziwezi kuwa sahihi sana).

    RewriteEngine On RewriteBase / RewriteRule ^wp-signup\.php - RewriteRule ^wp-activate\.php - # ANZA WordPress # Hatugusi sheria kutoka WordPress kwa chaguo-msingi :) # ... # MWISHO WordPress

    P.S. Ninajaribu kuelezea baadhi ya mambo ya wahusika wengine kwa undani zaidi iwezekanavyo, kwa sababu nilipoanza, wakati mwingine hapakuwa na mtu wa kupendekeza na kueleza mambo mengi. Pia ninaamini kwamba vidokezo vidogo kama hivyo kwenye nyenzo zingine vitahimiza mtu kujifunza kitu kipya na kupanua eneo lao la ujuzi. Maingizo ya RewriteRule hutumia misemo ya kawaida, sio ngumu hata kidogo, kwa mfano, ^ ishara inamaanisha mwanzo wa mstari.

    Matangazo

    ln[-FFhinsv] faili asili [ faili_lengwa ] ln [-Ffhinsv] faili asili ... saraka_lengwa kiungo faili_chanzo_lengwa_faili Mpango ln huunda kiingilio cha saraka (kiungo) na jina, faili_lengwa. Washa faili_lengwa modes sawa kwamba ni juu faili asili. Viungo hukuruhusu kuwa na nakala nyingi za faili au saraka sawa, ziko katika maeneo tofauti, bila kuchukua nafasi ya diski. Kuna aina mbili za viungo, viungo ngumu na viungo vya ishara. Kiungo kinaelekezaje faili asili, inategemea aina ya kiungo.

    Amri ya ln ina chaguzi zifuatazo: -f Iwapo faili_lengwa tayari ipo, ifute ili kiungo kiweze kuundwa. Chaguo hili linabatilisha chaguo -i. -F Kama faili_lengwa tayari ipo na ni saraka, iondoe ili kiungo kiweze kuundwa. Chaguo -F kutumika kwa kushirikiana na -f au chaguzi -i, ikiwa hakuna hata mmoja wao aliyetajwa, chaguo linaonyeshwa -f. Chaguo hili halifanyi kazi bila chaguo -s. -h Kama faili_lengwa au saraka_lengwa ni kiungo cha mfano, usiifuate. Chaguo hili ni muhimu pamoja na chaguo -f kuchukua nafasi ya kiunga cha mfano kinachoelekeza kwenye saraka. -i Hali ya maingiliano. Kama faili_lengwa ipo, mtumiaji ataombwa kufuta. Iwapo watakubali, ln itafuta faili_lengwa na itaunda kiunga kipya. Chaguo hili linabatilisha chaguo -f. -n Sawa na chaguo -h, kwa utangamano na utekelezaji mwingine wa programu ln. -s Unda kiungo cha ishara. -v Njia ya kuonyesha habari kuhusu utekelezaji wa programu ln. Kwa chaguo-msingi, programu ln hutengeneza kiunga kigumu. Kiungo ngumu kwa faili sio tofauti na faili ya chanzo, wakati mabadiliko yaliyofanywa kwa faili hayategemei jina ambalo lilipatikana. Viungo ngumu haviwezi kuwa viungo vya saraka, na pia haviwezi kupatikana nje ya mfumo fulani wa faili. Kiungo cha mfano kina jina la faili inayounganishwa. Wakati wa kufanya operesheni wazi(2) faili asili inatumika juu ya kiungo cha mfano. Wito takwimu(2) iliyotekelezwa kwenye kiunga cha mfano pia itarudisha faili asili. Ili kupata habari kuhusu kiungo unaweza kutumia lstat(2). Kusoma yaliyomo kwenye kiunga cha ishara, unaweza kutumia simu soma kiungo(2). Tofauti na viungo ngumu, viungo vya ishara vinaweza kuwa kwenye mfumo tofauti wa faili na vinaweza kuelekeza kwenye saraka. Kwa hoja moja au mbili, mpango ln huunda kiungo kwa kilichopo faili asili. Jina la kiungo litachukuliwa kutoka kwa hoja faili_lengwa. Ikiwa katika mabishano faili_lengwa, saraka ya kuunda kiunga haijabainishwa, saraka ya sasa itatumika, ikiwa tu saraka imetajwa, kiungo kitaundwa kwa kipengele cha mwisho kutoka faili asili. Na zaidi ya hoja mbili, mpango ln hutengeneza viungo ndani saraka_lengwa kwa njia zote zilizoainishwa ndani faili asili. Viungo vinapewa majina ya faili za chanzo. Ikiwa programu ln, inayoitwa kwa fomu kiungo, imepitishwa kwa hoja mbili haswa, hoja zilizopitishwa haziwezi kuwa saraka, na haikubali chaguo zozote katika fomu hii. Hii ni aina rahisi ya matumizi. Chaguzi za Utangamano -h, -i, -n Na -v, zimekusudiwa uoanifu na utekelezaji mwingine wa programu ln, na haipendekezwi kwa matumizi katika hati. Chaguo -F ni ya ziada kwa