AD ակտիվացրեք PHP- ն: Ինչպես ստեղծել ձեր սեփական գրանցման էջը WordPress Multisite- ում

Թույլ է տալիս միաժամանակ օգտագործել բազմաթիվ կայքերի մեկ WordPress պարամետր: Միեւնույն ժամանակ, յուրաքանչյուր կայք տվյալների բազայում ստանում է իր սեփական սեղանները յուրօրինակ նախածանցով:

Սեղաններ գրանցված օգտագործողների տվյալներով, որոնք ընդհանուր են բոլոր ցանցային կայքերում: Սա որոշակի գումարած է եւ գրանցվում է մի օր, կարող եք մուտք գործել բազմաթիվ կայքեր: Ավելին, յուրաքանչյուր կայքում նույն հաշիվը կարող է ունենալ տարբեր իրավունքներ: Օրինակ, մեկ կայքում օգտագործողը կարող է լինել խմբագիր եւ մեկ այլ ադմինիստրատորի վրա:

Սովորական տեղադրման մեջ WordPress էջը Գրանցում, թույլտվություն եւ գաղտնաբառի վերափոխում ցուցադրում է WP-Login.php ֆայլը:

  • wP-Login.php - Լիազորություն
  • wP-Login.php? Գործողություն \u003d Գրանցում - գրանցում
  • wP-Login.php? Գործողություն \u003d Lostpassword - գաղտնաբառի վերափոխում

Multisite ռեժիմում WordPress Kernel- ը սկսում է ինչ-որ այլ կերպ վարվել եւ WP-Login.php հղմանը միացնելիս: Գործողություն \u003d Գրանցվել է WP-SignUp.php- ի վերահղումը: Սա ձեր ցանցի գրանցման էջն է, որը լռելյայն է WordPress- ում:

Բացի սովորական օգտագործողի հաշիվներ գրանցելուց, կարող եք դրա վերաբերյալ ստեղծել նոր կայք, եթե SuperMinistrator- ը հնարավորություն տվել է ցանցի պարամետրերում նման հնարավորություն (ցանցային պարամետրեր):

Շատ թեմաներով գրանցման էջը շատ լավ տեսք չունի: Շատ թեմաներ օգտագործվում են CSS շրջանակների կողմից, ինչպիսիք են Bootstrap- ը եւ դրանց սեփական հատուկ դասերը էջերում տարբեր տարրերի ոճավորման համար, ուստի դժվար է գրել մեկ HTML, որը հարմար կլինի բոլորի համար:

Բայց դուք չպետք է հուսահատվեք, եթե էջը աննկատ է թվում: WP-signup.php ֆայլը սկզբում հիանալի բան է, երբ տեղանքի յուրաքանչյուր մաս դուրս մշակելու ժամանակ չկա. Կարող եք կենտրոնանալ այլ ավելին Կարեւոր էջեր եւ բովանդակություն:

Երբ պատրաստ կլինեք ձեր պատրաստելու համար Էջ Գրանցումը, WP-Signup.php- ը կլինի լավ նմուշ եւ օրինակ, որով հեշտ է հասկանալ գործառույթների սպեկտրը, որը WordPress- ը տրամադրում է օգտագործողների կողմից մուտքագրված տվյալների մշակման եւ նոր հաշիվներ ստեղծելու համար:

Հիմնական կայքի ցանց

Լռելյայն, WordPress- ը բացում է գրանցման էջը (WP-Signup.php) հիմնական տիրույթի (կայքի) ցանցում: Այնուամենայնիվ, յուրաքանչյուր ցանցային կայքի համար կարող եք ստեղծել գրանցման էջեր, նույնիսկ եթե դրանք թեմաներ ունեն:

Մենք կքննարկենք գործը, երբ մեկ թեմա օգտագործվի բոլոր ցանցային կայքերում, բայց դրանցից յուրաքանչյուրի վրա կա գրանցման էջ: Կայքերը տարբերվում են լեզվով (անգլերեն եւ ռուսերեն), այնպես որ գրանցման էջը կցուցադրվի «Այր» լեզվի կայքում: Եթե \u200b\u200bկայքերը օգտագործում են տարբեր թեմաներ, ամեն ինչ կախված կլինի նրանից, թե որ թեմաներն են, որոնք նրանց համապատասխանեն նույն դասավորությանը (հիանալի իրավիճակ, որը կարող է ձեզ մղել իր բոլոր թեմաները):

Այլընտրանքային գործառույթներին. Ppp.

Պատվիրեք ֆայլերում

MU-plugins- ը կարող է պարունակել ցանկացած թվով ֆայլեր եւ մի կառույց, որոնք ձեզ համար տրամաբանական են թվում: Ես հավատարիմ եմ նման հիերարխիայի մասին.

| MU-plugins | | Load.php | | Սելենա-ցանց | | | Գրանցվել | | | | plugin.php | | | ... | | | Jetpack | | | | plugin.php.

Load.php ֆայլում, թարգմանություններ եւ բոլոր անհրաժեշտ «plugins» - ը միացված են.

// բեռնափոխադրումներ MU-plugins Load_muplugin_textdomain ("Selena_Network", "/ Selena-Network / Languages \u200b\u200b/"); // Գործառույթի էջի ֆունկցիան պահանջում է wpmu_plugin_dir: "/selena-network/signup/plugin.php"; // մեկ այլ plugin // պահանջում է wpmu_plugin_dir ...

Սելենա ցանցի գրացուցակի ներսում պահվում են plug-in Թղթապանակները: Յուրաքանչյուրն ունի իր plugin.php, որը մենք կապում ենք բեռի վրա: Այն տալիս է ճկունություն եւ ակնթարթորեն անջատելու եւ միացնելու հնարավորություն Առանձին բաղադրիչներ Աշխատանքի նախագծի վերաբերյալ արտակարգ իրավիճակների դեպքում:

Գրանցման էջ

Հասկանալով, թե որտեղ եւ ինչպես կգրենք ծածկագիր, կարող եք գնալ գրանցման էջի ստեղծմանը:

Ստեղծեք էջը օրինակով .org/signup/ սովորական ինտերֆեյսի միջոցով: Որպես հասցե, կարող եք օգտագործել ցանկացած URL, որը կարծես հարմար կլինի ձեր նախագծի համար:

Վերահղում դեպի ցանկալի գրանցման էջը

«WordPress- ի» համար `մեր նոր գրանցման էջի մասին տեղեկանալու եւ դրա վրա վերահղման մասին, սեղմելիս« Գրանցվել »հղումը սեղմելիս օգտագործվում է WP_Signup_location ֆիլտրը: Այն կարելի է գտնել WP-Login.php- ի ներսում եւ նա է, ով պատասխանատու է լռելյայն WP-Signup.php- ի վերահղման համար:

Դեպք «Գրանցվել». Եթե (is_multisite ()) (WP_REDIRECT (կիրառեք_filters ("WP_SIGENG_Location", Network_Site_url ("WP-Signup.Php"))); դուրս գալ; // ...

Ինչպես եք հիշում, լռելյայն, գրանցման էջը բացվում է ցանցի հիմնական տիրույթում: Այդ իսկ պատճառով այստեղ օգտագործվում է Network_Site_url ():

Ավելացնել ձեր ֆիլտրի ձեռագործը Mu-plugins / Selena-Network / Signup / Plugin.php- ին, որին կտրվի գրանցման էջի հասցեն ընթացիկ կայքում.

Գործառույթ Selena_network_signup_page ($ URL);) add_filter ("selena_network_signup_page", 99);

selena_Network - Նախածանց, որը ես օգտագործում եմ Mu-plugins- ի ներսում գտնվող բոլոր գործառույթների անուններով, որպեսզի կարողանան փոխարինել իր ուրույն նախածանցով: 99 զտիչ ավելացնելը, քանի որ որոշ plugins, ինչպիսիք են BBPress- ը եւ Buddypress- ը, կարող են վերագրել այս հասցեն ձեր սեփական (Mu-plugins- ը բեռնված է ավելի շուտ, քան սովորական plugins- ը):

Խնդրում ենք նկատի ունենալ, որ Home_url () օգտագործվում է, որը, ի տարբերություն N_Site_url (), տալիս է ընթացիկ կայքի, այլ ոչ թե հիմնական ցանցային կայքի հասցեն:

WP-signup.php գործառույթ

WP-Signup.php ֆայլը պարունակում է մեծ թվով գործառույթներ եւ կոդ: Պատկերը որպես ամբողջություն տեսնելու համար կարող եք օգտագործել ծալովի կոդը: Որպես կանոն, անգլերենում այն \u200b\u200bկոչվում է «կոդի ծալք»:

Ֆայլի հենց սկզբում 1-ից 80-ը գիծը (4.1.1-րդ տարբերակով), տարբեր ստուգումներ են արվում եւ դուրս բերում «Սկսել» էջը, օգտագործելով Get_header ():

Հաջորդը, շատ մեթոդներ են հայտարարվում եւ նախքան նրանց հետ աշխատելը, արժե հասկանալ, թե ինչն է դարձնում յուրաքանչյուր գործառույթ: Ներսում, դրանցից շատերը հաճախ օգտագործվում են այլ գործառույթներ WPMU_ նախածանցով, բոլորն էլ հայտարարվում են WP- ներում / MS-FACUTIONS.PHP ֆայլում: Այս բաժինը դժվար է հասկանալ, առանց կոդը ինքներդ տեսնելու: Հիմնական գործառույթների փոքր նկարագրությունից ներքեւ դժվարություն ունենալու դեպքում:

  • wpmu_signup_stylesheet () - գրանցման էջում լրացուցիչ CSS- ի արտադրանք:
  • show_blog_form () - կայքի գրանցման դաշտեր (հասցեն, անվանելի որոնիչների համար):
  • valiate_Blog_Form () - մուտքագրված կայքի հասցեի եւ անունների ստուգում WPMU_Valide_Blog_Signup ():
  • show_user_form () - Օգտագործողի գրանցման դաշտերը (մուտքի եւ էլփոստի հասցեն):
  • valiate_User_form () - Մուտք գործելու եւ հասցեների ստուգում: Փոստ WPMU_VALIDEER_USER_SIGNUP ():
  • signup_another_blog () - նոր կայքեր գրանցելու համար ցուցադրումներ, որոնք օգտագործում են show_blog_form () օգտագործողների համար, ովքեր արդեն գրանցված են կայքում:
  • valiade_another_blog_signup () - ստուգում է կայքի հասցեն եւ անունը, օգտագործելով Վալորիլ_ Blog_form ():
  • Գրանցման_USER- ը () հիմնական գործառույթն է գրանցման էջի ոլորտը արտակարգելու համար:
  • valiate_User_signup () - ստուգում է մուտքի եւ էլփոստի հասցեն: Փոստի փոստով ():
  • signup_Blog () - Կայքի հասցեն, անվանումը եւ տեսանելիությունը մուտքագրելու դաշտերը (երկրորդ գրանցման քայլ) `օգտագործելով show_blog_form ():
  • valiate_Blog_Signup () - Ստուգում է մուտքը, էլ. Փոստի հասցեն: Փոստ, հասցե եւ կայքի անվանումը:

WP-signup.php ֆայլի ներքեւի մասում (4.1.1-րդ տարբերակի 646 կարումից), գրանցման էջի հիմնական տրամաբանությունը, որն օգտագործում է վերը նշված մեթոդները: Օրենսգրքի այս մասը չի ներկայացվում գործառույթին: Վերջում կանչվում է Get_Footer ():

Պատճենեք Functional WP-Signup.php- ը

Հաջորդը, Mu-plug-ins- ում WP-Signup.php պատճենելու կարգը նկարագրվելու է եւ փոփոխություններ կկատարի պատառաքաղի մեջ: Դա կարող է թվալ ճիշտ ճանապարհով: Փոխարենը, դուք կարող եք գրել ձեր գործառույթները զրոյից `դասերի օգտագործմամբ ստուգելու եւ ելքային ձեւերը, այլ ոչ թե պայմանական գործառույթներ: Իմ կարծիքով, WP-Signup.php- ն արդեն ունի բոլոր անհրաժեշտ տրամաբանությունը մեր էջի համար, մնում է միայն փոքր փոփոխություններ կատարել:

WordPress- ը թարմացնելիս WP-SignUp.php- ը ժամանակ առ ժամանակ փոխվում է, բայց դա չի նշանակում, որ յուրաքանչյուր թողարկմամբ պետք է համաժամեցնի իր «FORC»: WP-Signup.php- ի գործառույթները, ըստ էության, զբաղվում են միայն HTML ելքի միջոցով, տվյալների ստուգում, հաշիվներ եւ կայքեր ստեղծում են MS-Functions.FR- ում հայտարարված WPMU_ նախածանցով:

Մենք կստեղծենք մի գործառույթ, որը կցուցադրի գրանցման ձեւը էջում: Դա անելու համար պատճենեք WP-signup.php- ը WordPress- ի արմատից Mu-plugings / Selena-Network / SignUp /. Միացրեք այն Mu-Pugins / Selena-Network / Signup / plugin.php):

Պահանջում են wpmu_plugin_dir: "/selena-network/signup/wp-signup.php";

Delete նջել բոլոր պահանջները եւ ավելորդ ստուգումները պատճենված ֆայլի հենց սկզբից: 4.1.1-րդ տարբերակում սա ամբողջ կոդն է 1-ից 80 տող:

Այժմ մենք պատրաստ ենք ստեղծել հիմնական գործառույթը `գրանցման ձեւը ցուցադրելու համար: Դա անելու համար բոլոր տրամաբանությունը 646 տողից եւ ֆայլի վերջում մենք կփոխանցվի Selena_Network_Signup_Main կոչվող գործառույթին: Վերջում դուք ջնջում եք երկու ավելորդ փակումը

(Գծեր 722 եւ 723), ինչպես նաեւ զանգի Get_Footer ():

Նորաստեղծ selena_network_signup_main- ում () հենց սկզբում մենք կհայտարարենք գլոբալ փոփոխական Active_signup- ը, որ այս ֆայլի օգտագործման բոլոր մեթոդները: Եվ ավելացրեք Prege_Signup_form իրադարձության զանգը, որը մենք ջնջեցինք ֆայլի սկզբից:

Գործառույթ Selena_network_signup_main () (Global $ Active_Signup; DO_ACTION («ԱՌԱԻՆ_ՍԻԳՈՒՊ_ՖՈՐՄ»); // ...)

Այժմ մնում է միայն փոխել դասավորությունը բոլոր տեղերում, որտեղ անհրաժեշտ է, եւ գրանցման էջը պատրաստ է:

Գրանցման ձեւի արդյունքը

Այստեղ առնվազն երկու տարբերակ կա: Կարճ կոդ ստեղծելու եւ էջում այն \u200b\u200bտեղադրելու ավելի հարմար միջոց, սովորական խմբագրի միջոցով:

// Ստեղծեք ցանց_ Signup Add_shortcode կարճ կոդ ("Selora_network_signup_main");

Երկրորդ տարբերակն այն է, որ դուստրերի թեմայի թղթապանակում ստեղծեք էջ-ստորագրման էջ: «Գրանցվել» բառի փոխարեն կարող եք օգտագործել էջը նշանակված եզակի ID: Կաղապարի ներսում ավելացրեք պահանջվող դասավորությունը եւ ընտրեք Selena_network_signup_main () ճիշտ տեղում:

Արդյունքում, իմ գրանցման էջը սկսեց շատ ավելի լավ եւ մաքուր տեսք ունենալ:

Ակտիվացման էջ

Ըստ լռելյայն, WordPress- ը պայմանականորեն բաժանում է գրանցման գործընթացը բազմատեսակ երկու քայլով `լրացնելով կայքի ձեւը եւ հաշվարկի ակտիվացումը, երբ հղումը ուղարկվում է աքսորվածին էլեկտրոնային նամակ, Նախորդ հատվածում ստեղծված ձեւը լրացնելուց հետո WordPress- ը նամակ է ուղարկում փոքր հրահանգով եւ տեղեկանքը `հաշիվը ակտիվացնելու համար:

Ակտիվացման էջի արդյունահանման համար WP-Active.PhP ֆայլը պատասխանվում է WordPress Root Directory- ում: WP-Activate.php- ը կարող է նաեւ ամբողջովին փոխվել: Գործընթացը նման է այն, ինչ մենք արդեն արել ենք WP-Signup.php- ի համար:

Ստեղծեք օրինակը .org/Arctivate / էջը նորմալ ինտերֆեյսի միջոցով: Որպես հասցե, օգտագործեք ցանկացած URL, որը ձեզ համար հարմար կլինի:

Պատճենեք WP-Active.php ֆայլը ձեր MU-plugins- ին եւ միացրեք այն Mu-Pugins / Selena-Network / Signup / plugin.php:

Պահանջում են wpmu_plugin_dir: "/selena-network/signup/wp-activate.php";

Ներսում, ոչ այնքան բովանդակություն, ի տարբերություն wp-signup.php. Ֆայլը կատարում է մեկ գործողություն `ակտիվացնում է հաշիվը, եթե ճիշտ ստեղնը ստացվում է եւ ցուցադրում է սխալի հաղորդագրություն կամ հաջող գործողություն:

Delete նջեք բոլոր ավելորդ ստուգումները եւ պահանջեք `WordPress 4.1.1-ում 1-ից 69 տող: Վերջում, հեռացրեք Get_Footer () զանգը: Մնացած բովանդակությունը փոխանցելով Selena_Network_activate_main () գործառույթ:

Հետաքրքիր է նկատել, որ WP_INSTALING Mustant- ը հայտարարվել է այստեղ, նախքան WordPress- ը բեռնելը (WP-Load.php): Դրա ներկայությունը WordPress- ը չի բեռնում plugins:

Ինչպես գրանցման էջի դեպքում, մնում է միայն շտկել այն դասավորությունը, որտեղ անհրաժեշտ է: Կարող եք փոխել նաեւ ցուցադրված հաղորդագրությունների տեքստը (այս դեպքում մի մոռացեք ավելացնել ձեր MU-plugins- ի տեքստային տիրույթը բոլոր գործառույթների թարգմանիչներին, այն տեղադրված չէ որեւէ այլ տեղ):

Պատրաստի գործառույթը կարող է օգտագործվել կանխորոշված \u200b\u200bէջում `դուստր ձեռնարկության մեջ կարճ կոդով կամ առանձին ձեւանմուշով:

Ակտիվացման տառեր, պատշաճ հղումներով

Ակտիվացման էջը պատրաստ է աշխատել, բայց WordPress- ը չգիտի այդ մասին եւ դեռ կուղարկի ակտիվացման նամակներ `WP-Active.php- ին հղումով: Ի տարբերություն wp-signup.php- ի զտիչ, որը թույլ կտա փոխել հասցեն: Փոխարենը, դուք պետք է գրեք ձեր առանձնահատկությունը, որը ճիշտ հղումներով նամակներ կուղարկի:

Էջում ձեւ լրացնելու եւ ուղարկելու պահին Գրանցում WordPress- ը Զանգեր wpmu_signup_ Օգտվող() կամ wpmu_signup_ Բլոգ:() Կախված գրանցման տեսակից: Երկու գործառույթներն էլ ստեղծում են նոր մուտք WP_Signups աղյուսակում, այն լրացնելով անհրաժեշտ բովանդակությամբ, որոնց թվում կա հաշվի ակտիվացման բանալին:

Դրանից հետո, կախված գործառույթից, CHMU_SIGNUP_- ը կոչվում է Օգտվող_Notification () կամ wpmu_signup_ Բլոգ:_Notification (): Երկու գործառույթներն ունեն նման ֆունկցիոնալություն. Ստեղծեք եւ նամակ ուղարկեք ակտիվացման տեղեկանքով, բայց տարբեր փաստարկներ վերցրեք: Երկու անգամ կան ֆիլտրեր միջոցառումների «ընդհատման» համար:

Եթե \u200b\u200b(! Դիմեք_filters ("wpmu_signup_user_user_notification", $ Օգտագործող, $ User_Email, $ Key, $ Meta)

Բլոգի ստեղծմամբ հաշիվները ակտիվացնելու համար.

Եթե \u200b\u200b(! Դիմեք_filters («WPMU_SIGEUG_BLOG_BLOG_NOTIOCIEFION», $ Դոմեյն, $ Ուղի, $ վերնագիր, $ Օգտագործող, $ Օգտագործող, $ - $

Մնում է միայն գրել ձեր ձեռքերը, որի մեջ դուք նամակներ եք ուղարկում WP_Mail- ի միջոցով (), եւ վերջում պարտադիր է, որ այդ բառը երկու անգամ ակտիվացնի լռելյայն WP-Active.php.

Գործառույթ Selena_network_wpmu_signup_user_notification ($ Օգտագործող, $ User_Email, $ ստեղն, $ Meta \u003d զանգված (// Ստեղծեք վերնագիր, նամակ ուղարկեք կամ նամակ ուղարկեք) Wp_mail ($ user_email, wp_specialchars_decode ($ Առարկա), $ հաղորդագրություն, $ հաղորդագրություն_ ուղեղներ); ;

Եթե \u200b\u200bSMTP սերվերի միջոցով նամակներ եք ուղարկում, կամ գրանցումների քանակը շատ մեծ է, պետք է մտածեք անմիջապես նամակներ չուղարկելու մասին: Փոխարենը, կարող եք ավելացնել Cron- առաջադրանքներ `օգտագործելով WordPress Cron- ը:

Փակեք մուտքը WP-Signup.php եւ WP-Activate.php

Ստեղծելով իր սեփական գրանցումը եւ ակտիվացման էջերը, գուցե անհրաժեշտ լինի փակել «բնօրինակները»: Օրինակ, եթե գրանցման էջում կան լրացուցիչ դաշտեր, որոնք պետք է լրացվեն: Բացի այդ, WordPress- ի բազմաթիվ վայրեր ենթարկվում են սպամի գրանցումների:

Մեկ գործի հետ լուծելու երկու խնդիր կարելի է խնդրել, որ Apache- ը տա 404-ը `այս էջերը բացելու փորձ կատարելու դեպքում: Դա անելու համար պարզապես անհրաժեշտ է գրանցել զույգ լրացուցիչ վերաշարադրող ձեր կազմաձեւման ֆայլը կամ. HTaccess:

RewriteEngine- ը վերամշակել / # կանոնավոր արտահայտությունների իմացությունը երբեք ավելորդ չի լինի :) վերաշարադրվում է ^ wp-signup \\ .php - # Սկիզբ WordPress # կանոնները `լռելյայն: . # Վերջ WordPress- ը:

Եզրակացություն

Այս եւ շատ այլ «խնդիրների» համար, որոնք կապված են WordPress- ի հետ ինտերնետում, կան բազմաթիվ լուծումներ: Օրինակ, գրանցման եւ ակտիվացման էջեր ստեղծելու համար ոմանք առաջարկվում են վերաշարադրել բնօրինակ WP-Signup.php եւ WP-Activate.php: Սա չպետք է արվի, քանի որ WordPress- ի թարմացման դեպքում կկորցնեք ֆայլերի բոլոր փոփոխությունները, եւ չեք կարող, ստուգեք միջուկի օգտագործմամբ:

Any անկացած հավելում մշակելիս թեմաները կամ լուծումները պետք է որոշ ժամանակ անցկացվեն `կապված WordPress- ի ներսում: Դրա համար կան շատ օգտակար կարգաբերման գործիքներ:

Սիրված

Տարբեր դերեր ինքնաբերաբար նշանակելու համար նոր օգտվողները կարող են օգտագործել բազմատեսակ օգտագործողի կառավարման plugin:

Եթե \u200b\u200bհոդվածը կարդալուց հետո գրանցման եւ ակտիվացման էջերի ստեղծման ընթացքում որեւէ հարց կամ դժվարություն ունեք, թողեք մեկնաբանություն, եւ մենք կպատասխանենք:

27.03.2015 27.03.2015

WordPress- ի մշակողը: Նա սիրում է ամեն ինչի կարգը եւ գործ ունենալ նոր գործիքներով: Ոգեշնչված սիմֆոնիայի բաղադրիչների ճարտարապետությունից:

  • Ստեղծեք ձեր սեփական գրանցման էջը Multisite- ի համար `ստանդարտ WP-Signup.php- ի փոխարեն:

    Սովորականում Տեղադրում WordPress Գրանցման էջը (թույլտվություն, գաղտնաբառի վերափոխում) ցուցադրում է WP-Login.php ֆայլը:

    • / wp-login.php - թույլտվություն
    • / wp-login.php?action\u003dregister - Գրանցում
    • / wp-login.php?action\u003dlostPassword - գաղտնաբառի վերափոխում

    WP-Login.ph- ում բազմազգի համար կան առանձին պայմաններ: Այսպիսով, երբ կտտացնում եք հղումը / wp-login.php?action- ը Multisaite- ի վրա, WordPress- ը կդարձնի վերահղումներ դեպի / wp-signup.php էջը: Շատ թեմաներով էջը շատ գրավիչ չէ, ուստի մենք կդարձնենք մեր սեփականը:

    Հիմնական կայքի ցանց

    Լռելյայն, WordPress- ը բացում է գրանցման էջը (WP-Signup.php) հիմնական տիրույթի (կայքի) ցանցում: Այնուամենայնիվ, յուրաքանչյուր ցանցային կայքի համար կարող եք կատարել առանձին գրանցման էջ, նույնիսկ եթե նրանք ունեն տարբեր թեմաներ: Մենք կքննարկենք գործը, երբ ցանցային բոլոր կայքերում ունենան իր գրանցման էջը, բայց նույն թեման օգտագործվում է, եւ կայքերը տարբերվում են միայն լեզվով: Եթե \u200b\u200bօգտագործվում են տարբեր թեմաներ, ապա ձեզ հարկավոր է ավելի շատ կոդ գրել:

    Գործառույթներ .ուժ

    Ոչ. Այս ֆայլի անվանումը, կարծես, նշված է WordPress- ի մասին ցանկացած հոդվածում: Մեր դեպքում հաշվի առնելով այն փաստը, որ գրանցման ֆունկցիոնալությունը նախատեսված է մի քանի կայքերի համար, իմաստ ունի այն վերցնել ցանկացած կայք բացելիս բեռնված է MU- հավելվածների մեջ:

    Քնարական digression

    Հատկանշական է, որ Mu-plugins- ը բեռնված է ավելի վաղ, քան սովորական plug- ներ, եւ մինչեւ WordPress միջուկը ամբողջությամբ ներբեռնվի, այնպես որ որոշ գործառույթների կոչը կարող է հանգեցնել FATABAL սխալների: Նմանատիպ «վաղ» ներբեռնումն ունի իր առավելությունները: Եկեք ասենք, որ ցանկացած թեմայի ներսում չի կարող կապվել որոշ գործողությունների, որոնք առաջ են բերվում նախքան գործառութիֆիկային ֆայլը ներբեռնելու համար: Դրա օրինակ կարող է ծառայել որպես jetpack_module_load_related-posts plugin (հարակից հաղորդագրություններ `մոդուլի անվանումը), որի միջոցով հնարավոր է հետեւել jetpack- ում մոդուլների գործունեությունը: Հնարավոր չէ «ճանկել» թեմային ֆայլից այս գործողությանը, քանի որ գործողությունն արդեն աշխատել է նախքան թեման բեռնելը. Plugins- ը բեռնված է ավելի վաղ: Դուք կարող եք դիտարկել WordPress Boot- ի կարգի ընդհանուր պատկերը Code Ication Reference- ի էջում:

    Պատվիրեք ֆայլերում

    Mu-plugins- ը կարող է պարունակել ցանկացած թվով ֆայլեր եւ ցանկացած գծապատկեր, որոնք ձեզ համար տրամաբանական են թվում: Ես հավատարիմ եմ նման հիերարխիայի մասին.

    | -MU-plugins | - | Load.php | - | Սելենա-ցանց | - | - | - - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | ...... | - | - | - | -jetpack | - | - | - | --| - -plugin.php

    Load.php ֆայլում բոլոր անհրաժեշտ «plugins» - ը միացված են մեր ցանցին.

    Բեռնեք Traslates բոլոր addons load_muplugin_textdomain ("Selena_network", "/ Selena-Network / Languages \u200b\u200b/"); // Network անցի գրանցումը պահանջում է wpmu_plugin_dir: "/selena-network/signup/plugin.php"; // մեկ այլ plugins // պահանջում է wpmu_plugin_dir ...

    Selena-Network Folder- ի ներսում խրոցը պահվում են, յուրաքանչյուրն ունի իր plugin.php, որը մենք կապում ենք բեռնվածքի վրա: Այն տալիս է ճկունություն եւ արագորեն անջատելու եւ որոշ բաներ ներառելու ունակություն:

    Գրանցման էջի հասցեն

    Գրանցման էջի հասցեն նշելու համար օգտագործեք WP_Signup_location ֆիլտրը: Այն կարելի է գտնել WP-Login.php ֆայլի ներսում, եւ նա է, ով պատասխանատու է WP-Signup.php- ի վերահղման համար:

    Գործ «Գրանցվել». Եթե (is_multisite ()) (wp_redirect (կիրառեք_filters ("wp_signup_ տեղադրում", Network_site_url ("WP-Signup.php")); Ելք;

    Ձեր առանձնահատկությունն ավելացրեք MU-Plugins / Selena-Network / SignUp / Plugin.php- ում, որը ներկայիս կայքում կտա գրանցման էջի հասցեն.

    Գործառույթ SELENA_NETWORK_SSignup_page ($ URL) (վերադարձնել տուն_ "." / Գրանցվել / ";) add_filter (" selena_network_signup_age ", 99);

    selena_Network - Նախածանց, որը ես օգտագործում եմ Mu-plugins- ի ներսում գտնվող բոլոր գործառույթների անուններով, որպեսզի կարողանան փոխարինել իր ուրույն նախածանցով: 99 զտիչ ավելացնելը, քանի որ որոշ plugins, ինչպիսիք են BBPress- ը եւ Buddypress- ը, կարող են վերագրել այս հասցեն ձեր սեփական (Mu-plugins- ը բեռնված է ավելի շուտ, քան սովորական plugins- ը): Խնդրում ենք նկատի ունենալ, որ Home_url () օգտագործվում է Network_Site_url- ի փոխարեն (), այցելուին նույն տիրույթի թողնելու համար: Դուք կարող եք օգտագործել ցանկացած url որպես հասցե:

    Էջի ստեղծում

    Այժմ եկեք ստեղծենք էջի էջի էջի միջոցով, կանոնավոր ինտերֆեյսի միջոցով, եւ մեր նոր էջի համար դուստրերի Թղթապանակի ձեւանմուշը `Էջի Signup.php: «Գրանցվել» բառի փոխարեն կարող եք օգտագործել եզակի ID:

    Նոր ձեւանմուշի ներսում դուք պետք է զանգահարեք Selena_Network_signup_main () գործառույթ, որը կցուցադրի գրանցման ձեւը:

    Հատկանշական է, որ կաղապարներով ամբողջ գործընթացը պարտադիր չէ, եւ փոխարենը կարող եք ստեղծել ձեր սեփական կարճ կոդը, որը նաեւ կզանգահարվի Selena_Network_SignUp_Main () գործառույթ:

    wP-Signup.php եւ WP-Activate.php

    Այժմ մենք կստեղծենք մի գործառույթ, որը կցուցադրի գրանցման ձեւը: Դա անելու համար պատճենեք WP-Signup.php- ի ֆայլերը եւ WP-Active.php արմատից WordPress- ից Mu-plugings / Selena-Network / SignUp / (եւ մի մոռացեք դրանք միացնել Mu-Plugins- ի ներսում / Selena-Network / Գրանցվել / plugin.php): Ֆայլերով հետագա մանիպուլյացիաները չափազանց դժվար եւ երկար են նկարագրելու համար, այնպես որ եկեք ինքներդ ձեզ դարձրեք: Ես նկարագրելու եմ միայն այն, ինչ պետք է կատարվի եւ հրապարակվի ձեր նախագծի աղբյուրի ֆայլերը.

    1. Ֆայլի սկզբում ջնջեք բոլոր պահանջները, զանգահարելով գործառույթներն ու այլ ծածկագրերը արտաքին գործառույթները:
    2. Վերանվանեք բոլոր գործառույթները `անուններին ավելացնելով եզակի նախածանցներ:
    3. WP-Signup.php կոդի ներքեւի մասը փաթաթված է Selena_Network_SignUp_Main գործառույթում եւ շատ ի սկզբանե գրել Global $ Active_signup; ,
    4. Տեղադրեք դասավորությունը ձեր սեփական ճիշտ վայրերում:

    WP-Activate.php- ի ներսում անհրաժեշտ է անել նույնը.

    1. Delete նջեք բոլոր ծածկագրերը արտաքին գործառույթներից, դասավորությունը փաթեթավորեք առանձին գործառույթի մեջ:
    2. Փոխեք դասավորությունը այն վայրերում, որտեղ անհրաժեշտ է:

    WP-ActiveAt.php ֆայլը պատասխանատու է հաշվի ակտիվացման էջի համար: Ինչպես գրանցման էջում, դուք պետք է ստեղծեք առանձին ձեւանմուշ, որի ներսում պետք է զանգահարել WP-Active.php ֆայլից գործառույթ:

    Մենք ուղարկում ենք ակտիվացման նամակներ

    Գրանցման էջը նամակ է ուղարկում այցելուին `հաշվի առնելով հաշվի ակտիվացմանը: Լռելյայն, սա WPMU_SIGE_USER_USER_NOSER_NOSER_NOTIAITION () գործառույթն է MS-Functions.PhP ֆայլից: Դրա ֆունկցիոնալությունը կարող է փոխառվել իր գործառույթի համար: Պատճառը, թե ինչու եք ուզում հրաժարվել այս գործառույթը օգտագործելուց. Այն հաշվի ակտիվացման տեղեկանք է ուղարկում WP-Active.php- ով: Դուք կարող եք անջատել այս հնարավորությունը `օգտագործելով WPMU_SIGEUP_USER_NOSER_NOTIFICATION ֆիլտրը` դրա վրա կեղծ տեղափոխելով (եթե դա չանի, ակտիվացման նամակը կուղարկվի երկու անգամ):

    Գործառույթ Миаbofselenagmez_wpmu_signup_user_notification ($ Օգտագործող, $ user_mail, $ ստեղն, $ Meta \u003d զանգված (// կոդ) ($ _specialchars_decode ($) ); Վերադարձիր կեղծ;) add_filter ("wpmu_signup_user_notification", "ArmyofseSelegenagmez_wpmu_signup_user_notification", 10, 4);

    Արդյունքում, Սելենայի թեմայով գրանցման էջը սկսեց շատ ավելի մաքուր եւ զգույշ լինել:

    Եզրակացություն

    Ինտերնետը շատ այլ բաներ ունի նույն բանը կատարելու համար `Apache վերահղումները, Ajax- ի ձեւերը, որոնք չեն աշխատի առանց Java սցենարի եւ այլն: Ես շատ ճիշտ չէի սիրում Իմ սեփական կայքը:

    Ես նշում եմ, որ խմբագրման ֆայլերը պետք է կարողանան ուշադիր եւ փորձել չխուսափել աղբյուրից դեպի Ranknesh, եթե WordPress- ը փոխում էր դրանք, փոփոխություններ գտնելու համար: Նրանք ավելի հեշտ էին համեմատել ,

    Մի մոռացեք դիտել վերը նկարագրված բոլոր գործառույթների աղբյուրը, որպեսզի լիարժեք գործ ունենան, թե ինչ եւ ինչպես է դա տեղի ունենում օրենսգրքի ներսում:

    Բոնուս: Պաշտպանություն սպամերից

    Նույնիսկ WordPress- ի ամենաերիտասարդ վայրերը հաճախ ենթակա են սպամի գրանցման: Դուք կարող եք անվերջ պայմաններ գրել զտելու համար բոտերը, հաճախ ավելի շատ նման են արհեստական \u200b\u200bինտելեկտի ստեղծման փորձին `բազմության դեպքում Apache- ի կանոնավոր վերահղումը օգնեց ինձ, որով / wp-- ign- Acitvate.php, ես խնդրեցի տրամադրել 404 (ես փորձագետ չեմ) Կարգավորեք Apache- ը:Այնպես որ, իմ կանոնները կարող են շատ ճիշտ լինել):

    RewriteEngine- ը վերամշակել / վերաշարադրվել ^ wp-signup \\ .php - վերաշարադրվել ^ wp-activate \\ .php - # Սկիզբ WordPress # կանոնները `լռելյայն

    Պ. Ս. Ես փորձում եմ հնարավորինս մանրամասն նկարագրել երրորդ կողմի բաները, քանի որ երբ ես սկսեցի, երբեմն ինչ-որ կերպ պատմել եւ բացատրել շատ բաներ: Ես նաեւ հավատում եմ, որ նման փոքր խորհուրդներ այլ նյութերի վերաբերյալ, ինչ-որ մեկը կուղղվի նոր բաների ուսումնասիրությանը եւ ընդլայնելով նրանց գիտելիքների ոլորտը: Կանոնավոր արտահայտություններն օգտագործվում են Reriterule գրառումներում, դրանք լիովին բարդ չեն, օրինակ, խորհրդանիշը ^ նշանակում է գծի սկիզբ:

    SEGAL Մենք կքննարկենք քննադատական \u200b\u200b1 օրվա խոցելիության շահագործումը հանրաճանաչ CMS Joomla- ում, որը ցուցաբերել է ինտերնետում, հոկտեմբերի վերջին: Դա կլինի թվերի խոցելիության մասին CVE-2016-8869, CVE-2016-8870 մի քանազոր CVE-2016-9081, Բոլոր երեքն էլ տեղի են ունենում մի կտոր կոդից, որը մեկ անգամ եղել է շրջանակի խորքում, սպասելով իրենց ժամերին, ապա այս Joomla- ի ցանկացած անմեղ օգտագործողների մեջ կբերի ազատվելու եւ նրա հետ բերելու քաոս, թալանված կայքեր: Միայն առավել քաջարի եւ համարձակ մշակողները, որոնց աչքերը մոնիտորների լույսից կարմիր են, եւ ստեղնաշարերը լցված են հացի փշրանքներով, նրանք կարողացան վիճարկել այտուցված շնչափողությունը եւ գլուխը պարտադրել ամրագրման խորանի վրա:

    Նախազգուշացում

    Բոլոր տեղեկությունները տրամադրվում են բացառապես տեղեկատվական նպատակներով: Ոչ խմբագիրներն ու հեղինակը պատասխանատու չեն սույն հոդվածի նյութերի պատճառած հնարավոր վնասի համար:

    Ինչու է ամեն ինչ սկսվել

    2016 թվականի հոկտեմբերի 6-ին Դամիս Պալման (Դեմիս Պալմա) թեմա է ստեղծում Stack- ի փոխանակման վերաբերյալ, որը հետաքրքրվեց. Ինչու, փաստորեն, Joomla Version 3.6-ում կա երկու եղանակ, նույն անունով գրանցամատյանում օգտագործողներին գրանցելու համար (): Առաջինը գտնվում է Users ConsontroleRegistration Controller- ում, իսկ երկրորդը `օգտագործողների մեջ: Դեյմիսը ցանկանում էր իմանալ, թե արդյոք UsersControlleruser :: Գրանցվել () մեթոդը օգտագործվում է ինչ-որ տեղ, կամ միայն էվոլյուցիոն անախրոնիզմ է, որը մնում է հին տրամաբանությունից: Նրան խանգարեցին այն փաստը, որ նույնիսկ եթե այս մեթոդը չի օգտագործվում որեւէ ներկայացման դեպքում, այն կարելի է անվանել ձեւավորված հարցման միջոցով: Որն էր ծրագրավորողի պատասխանը Itoctopus- ի մականունի ներքո, հաստատելով. Խնդիրն իսկապես գոյություն ունի: Եւ զեկույց ուղարկեց Joomla ծրագրավորողներին:

    Հաջորդը, իրադարձությունները զարգացրեցին առավել արագ ճանապարհը: Հոկտեմբերի 18-ին Joomla ծրագրավորողները ընդունում են Դեյնի զեկույցը, որը այդ ժամանակ POC- ի հետ կապված է, թույլ տալով գրանցել օգտագործողը: Նա գրառում է հրապարակել իր կայքում, որտեղ ընդհանուր առմամբ պատմել են այս մասին խնդրի եւ մտքերի մասին: Նույն օրը դուրս է գալիս Նոր վարկած Joomla 3.6.3, որը դեռ պարունակում է խոցելի ծածկագիր:

    Դրանից հետո Դեյվիդ Թամփելինի (Դավիթ Թամփելինի) սխալ է պտտվում գրանցման վիճակի համար, պարզ օգտվող չէ, այլ ադմինիստրատոր: Եվ հոկտեմբերի 21-ին Joomla անվտանգության թիմը նոր գործ է ունենում: Այն արդեն խոսում է արտոնությունների բարձրացման մասին: Նույն օրը հայտարարությունը հայտնվում է Joomla կայքում, որը երեքշաբթի, հոկտեմբերի 25-ին, կթողարկվի մեկ այլ վարկանիշ 3.6.3 հաջորդականությամբ, որը շտկում է միջուկի միջուկի կրիտիկական խոցելիությունը:

    Հոկտեմբերի 25-ին Joomla Security Strike Team- ը վերջին խնդիրը գտնում է, որ Դեյիսի կողմից հայտնաբերված մի կտոր կոդ: Այնուհետեւ պաշտոնական Joomla պահեստի հիմնական մասնաճյուղում, հոկտեմբերի 21-ի կատարումը, աննկատելի անունով պատրաստում է 3,6.4 կայուն թողարկում, որը շտկում է վատառողջ սխալը:

    Դրանից հետո բազմաթիվ շահագրգիռ անձինք կապված են մշակողների փոխանցմանը մշակողների փոխանցմանը. Նրանք սկսում են խթանել խոցելիությունը եւ ամուր պատրաստել:

    Հոկտեմբերի 27-ին Հարի Ռոբերթսի հետազոտողը պատրաստում է պատրաստի շահագործում XIPHOS հետազոտական \u200b\u200bպահեստում, որը կարող է PHP ֆայլ վերբեռնել խոցելի CMS- ով սերվերին:

    Մանրամասներ

    Դե, նախապատվությամբ այն ավարտված է, անցեք ամենահետաքրքիր գործին `խոցելիության խորաթափանցությունը: Որպես փորձարկման տարբերակ, ես տեղադրել եմ Joomla 3.6.3, այնպես որ բոլոր տողերի համարները տեղին կլինեն այս վարկածի համար: Եվ բոլոր ուղիները դեպի այն ֆայլերը, որոնք կտեսնեք հաջորդը, կցուցադրվի տեղադրված CMS- ի արմատի համեմատությամբ:

    Գտեք Դամիսի ափի մեջ, մենք գիտենք, որ կա երկու մեթոդ, որոնք համակարգում օգտագործում են օգտագործողի գրանցումը: Առաջինը օգտագործվում է CMS- ի կողմից եւ գտնվում է / Components/com_users/controllers/comers/controllers/registration.php:108: Երկրորդը (մեկը, որը մենք եւ պետք է զանգահարենք), ապրում է / բաղադրիչներում / Com_Users / Controllers / User.php: 293: Եկեք ուշադիր նայենք:

    286: / ** 287: * Օգտագործող գրանցելու մեթոդ: 288: * 289: * @return Bolean 290: * 291: * @since 1.6 292: * / 293: Հասարակական ֆունկցիայի գրանցամատյան () 294: (295: («Jinvalid_token»)); ... 300: // Ստացեք ձեւի տվյալները: 301: $ Տվյալներ \u003d $ սա- .. 315: $ Վերադառնալ \u003d $ Model-\u003e Վավերաբան ($ ձեւ, $ տվյալների); 316: 317: // Ստուգեք սխալների համար: 318: ($ 345: / Ավարտել գրանցումը: 346: $ Վերադառնալ \u003d $ Model-\u003e Գրանցվել ($ տվյալներ);

    Այստեղ ես թողեցի միայն հետաքրքիր տողեր: Խոցելի մեթոդի ամբողջական տարբերակը կարելի է դիտել Joomla պահեստում:

    Մենք դա կհասկանանք, թե ինչ է պատահում, երբ կանոնավոր օգտագործողի գրանցում. Ինչ տվյալներ են ուղարկվում եւ ինչպես են դրանք մշակվում: Եթե \u200b\u200bօգտագործողի գրանցումը միացված է պարամետրերում, ձեւը կարելի է գտնել http: //joomla.local/index.php/component/users/:


    Օգտագործողի գրանցման օրինական հարցումը նման է հետեւյալ սքրինշոթին:


    COM_USES բաղադրիչները պատասխանատու են օգտագործողների հետ աշխատելու համար: Ուշադրություն դարձրեք հարցման առաջադրանքի պարամետրին: Այն ունի $ վերահսկիչ: $ մեթոդ: Եկեք նայենք ֆայլի կառուցվածքին:

    Սցենարի անուններ թղթապանակում Վերահսկիչներ: Համապատասխանում է կոչվող վերահսկիչների անուններին: Քանի որ մեր խնդրանքով այժմ $ վերահսկիչ \u003d «գրանցում» է, ֆայլը կկանչի: Գրանցում. եւ դրա գրանցման () մեթոդը:

    Ուշադրություն, հարց. Ինչպես փոխանցել գրանցման վերամշակումը օրենսգրքի խոցելի ոլորտում: Դուք հավանաբար արդեն կռահել եք: Խոցելի եւ ներկա մեթոդների անունները համընկնում են (գրանցվել), այնպես որ մենք կարող ենք պարզապես փոխել կոչվող վերահսկիչի անունը: Եվ որտեղ է խոցելի վերահսկիչը: Իշտ է ֆայլում user.php., Ստացվում է $ $ վերահսկիչ \u003d "օգտվող": Մենք հավաքում ենք բոլորը միասին եւ ստանում ենք առաջադրանք \u003d user.register: Այժմ գրանցման հարցումը մշակվում է մեր անհրաժեշտ մեթոդով:


    Երկրորդ բանը, որ մենք պետք է անենք, ճիշտ ձեւաչափով տվյալներ ուղարկելն է: Այստեղ ամեն ինչ պարզ է: Լեգիտիմ ռեգիստրը () սպասում է ԱՄՆ-ից զանգահարված j'form, որում մենք տվյալներ ենք փոխանցում գրանցամատյանին. Անուն, մուտք, գաղտնաբառ, փոստ (տես էկրանը):

    • /components/com_users/controllers/registrollers/registration.php: 124: // Ստացեք օգտվողի տվյալները: 125: $ FueyData \u003d $ սա-\u003e մուտք-\u003e փոստ-\u003e ստացեք («jform», զանգված »);

    Մեր ծխը ստանում է այս տվյալները `օգտագործող անունով զանգվածից:

    • /components/com_Users/controllers/user.php: 301: // Ստացեք ձեւի տվյալները: 302: $ data \u003d $ սա-\u003e մուտք-\u003e փոստ-\u003e ստացեք («Օգտագործող», զանգված »);

    Հետեւաբար, մենք օգտագործում ենք բոլոր պարամետրերի անունները jfrom- ով օգտագործողի վրա:

    Երրորդ մեր քայլը CSRF վավեր նշան գտնելն է, քանի որ առանց դրա գրանցում չի լինի:

    • /Components/com_Users/controllers/user.php: 296: JSession :: checktoken ("Post") կամ JEXIT (Jinvalid_token));

    Կարծես թե HASH MD5 է, եւ կարող եք այն վերցնել, օրինակ, կայքում թույլտվության ձեւից / index.php/component/users/?view\u003dLogin:


    Այժմ դուք կարող եք օգտվողներ ստեղծել ցանկալի մեթոդով: Եթե \u200b\u200bամեն ինչ պատահեր, շնորհավորում եմ. Դուք պարզապես հասկացաք խոցելիությունը CVE-2016-8870 «Նոր օգտվողների գրանցման թույլտվությունների բացակայությունը»:

    Ահա, թե ինչպես է այն թվում, որ գրանցման «աշխատող» մեթոդում () Userscontrollerregistration վերահսկիչից.

    • /components/com_Users/controllers/registrollers/registration.php: 113: 114. Եթե (JCOMPONENTENHELPER :: GETPARAMS ("COM_USERS") -\u003e Ստացեք («Թույլատիրություն») \u003d\u003d 0) 115: (116: Դիտեք \u003d Մուտք », կեղծ)); 117: 118: Վերադարձ կեղծ; 119 :)

    Եվ այսպես, խոցելի մեջ.

    • /Components/com_Users/controllers/user.php:

    Այո, ոչ մի դեպքում:

    Երկրորդ, շատ ավելի լուրջ խնդիր հասկանալու համար մենք կուղարկենք մեր կողմից ձեւավորված հարցում եւ հետեւենք, թե ինչպես է այն իրականացվում օրենսգրքի տարբեր բաժիններում: Ահա մի կտոր, որը պատասխանատու է օգտագործողի կողմից աշխատանքային եղանակով ուղարկված տվյալները ստուգելու համար.

    Շարունակությունը մատչելի է միայն մասնակիցներին

    Տարբերակ 1. Միացեք կայքի համայնքին `կայքի բոլոր նյութերը կարդալու համար

    Նշված ժամանակահատվածում համայնքին անդամակցությունը ձեզ կբացի Հակերների բոլոր նյութերը, կբարձրացնի ձեր անձնական կուտակային զեղչը եւ կուտակի պրոֆեսիոնալ XakeP միավորի վարկանիշ:

    Թեմաները սովորաբար ֆունկցիոնալ չեն, բայց երբեմն մենք, մշակողներ, դուք պետք է մեր թեմայի մեջ ներմուծեք որոշ հնարավորություններ, որպեսզի այն մի փոքր ավելի լավ եւ հարմար լինի:

    Այս ուղեցույցում մենք կքննարկենք «plugins տարածքը» տերմինը, ինչպես նաեւ սովորեք, թե ինչպես օգտագործել Thomas Griffin- ի գրած ֆանտաստիկ գործիք: TGM Plugin Activation գրադարան:

    Թեմայի ֆունկցիոնալությունը. Ներխուժումը plugins- ի տարածք

    Թեմաները նախագծված են WordPress կայքի ձեւավորումը փոխելու համար: Իդեալում, թեման պետք է ազդի միայն տեսողական տեսանկյունից: Այնուամենայնիվ, մեր «Ոսկե դարաշրջանում» WordPress- ում plug-in մշակողները հաճախ ներառում են ֆունկցիոնալ հատկություններ իրենց թեմաներով, որոնք թույլ են տալիս պահպանել մրցունակությունը շուկայում:

    Սա plugins- ի տարածքի ներխուժումն է: Մենք կարող ենք ներկայացնել «plugins- ի տարածքը», որպես կոդի որոշ ֆունկցիոնալ բաժիններ: Ձեր կայքի գործառույթը փոխող ցանկացած կոդերի ցանկացած կոդ, որը պետք է ներկայացվի որպես plugin, եթե նշված ծածկագիրը դրված չէ WordPress միջուկի մեջ:

    Ես արդեն ձեւակերպել եմ ավելի վաղ իմ հոդվածներից մեկում `էմպիրիկ կանոն» տարածքի plugins:

    Եթե \u200b\u200bառանձնահատկությունը կապված է կայքի տեսողական ներկայացուցչության հետ, ապա այս դեպքում այն \u200b\u200bպետք է ներառվի թեմայի մեջ. Եթե \u200b\u200bայն կապված է ֆունկցիոնալության հետ, ապա այն պետք է ներկայացված լինի որպես առանձին հավելված:

    Բավականին պարզ կանոն: Մարդիկ դեռ փորձում են գրանցվել կոդային ֆունկցիոնալ բեկորների մակարդակով իրենց թեմաներում, բայց թեմաների կատալոգները (օրինակ, WordPress.org կամ Themeforest) դրանք չեն վերցնում plugins- ի տարածքը ներխուժելու համար: Այսպիսով, թեմաներով ֆունկցիոնալության առաջարկը դարձել է որոշակի խնդիր:

    Բարեբախտաբար, կա մի պարզ լուծում, որը դեմ չէ «plugins տարածքի» կառավարման դեմ:

    Ներածություն TGM Plugin ակտիվացման գրադարանին

    TGM հավելվածի ակտիվացում

    Ուշադրություն դարձրեք TGMPA () գործառույթին երկու պարամետրերով `օրենսգրքի հենց վերջում: Երկրորդ պարամետրը $ Config փոփոխական է, որը նույնպես զանգված է, ինչպես $ plugins: Ինչպես հետեւում է իր անունից, կարող եք կարգաբերել TGM Plugin ակտիվացման գրադարանը, օգտագործելով այս զանգվածի, Փոփոխականը ընդունում է իրերի սեփական շարքը.

    • iD (լարային) եզակի ID է ձեր թեմայի TGM Plugin ակտիվացման գրադարանի համար: Սա շատ կարեւոր է. Եթե այլ plugins օգտագործում են նաեւ TGM plugin ակտիվացումը, տարբեր ID- ները կանխելու են հնարավոր հակամարտությունները:
    • default_Path (string) - ձեր թեմայի մեջ plug-ins- ի լռելյայն բացարձակ ուղի: Այն տեղադրելիս կարող եք օգտագործել ZIP ֆայլի անունը որպես աղբյուրի պարամետր արժեք ձեր plug-in- ի համար:
    • mENU (լարային) - MENU ընտրացանկ, plug-ins տեղադրման համար:
    • has_notices (Bolean) - Եթե ճշգրիտ է նշված, վարչական ծանուցումները կտրամադրվեն պահանջվող / առաջարկվող plug-ins- ի համար:
    • Աշխարհազանելի (Boolean) - Եթե ճշգրիտ է նշված, օգտագործողը կարող է «փակել» ծանուցումները:
    • dismiSh_MSG (լարային) - Եթե մերժելի տարբերակը կեղծ է, Այս հաղորդագրությունը Show ուցադրվելու է ադմինիստրատորի ծանուցումը վերեւում:
    • iS_Automatic (Boolean) - Եթե ճշգրիտ է նշված, plugins- ը կակտիվացվի այն բանից հետո, երբ օգտագործողը համաձայնի տեղադրել դրանք:
    • Հաղորդագրություն (լարային) - Լրացուցիչ HTML, որը ցուցադրվում է plug-in աղյուսակի դիմաց:
    • Տողեր (զանգված) - զանգված, որը ներառում է ցուցադրված հաղորդագրություններ: Դուք կարող եք դրանք տեղադրել որպես հեռարձակվող գծեր: Նայեք օրինակին. PHP ֆայլը `բոլոր հաղորդագրությունների ամբողջական ցուցակը տեսնելու համար:
    «Առասպել-TGMPA», // Ձեր եզակի TGMPA ID «Default_Path» \u003d\u003e Get_Stylesheet_Directory (): "/ lib / plugins /", // լռելյայն բացարձակ ուղի "Menu անկ" "MENTEME-INTERMENT-POINDOWINS", // MENUE SLUG "HAS_NOTICE" \u003d BACE "FALSE" , // Նկատումները չեն մերժում «աշխատանքից հեռացնել_msg» \u003d\u003e «Ես իսկապես ձեզ պետք է, որպեսզի տեղադրեք այս plugins, լավ»: // ճշմարիտ, // ինքնաբերաբար Տեղադրումից հետո ակտիվացրեք plugins "հաղորդագրություն" \u003d\u003e "", // հաղորդագրություն դուրս գալուց առաջ plugins աղյուսակ« տողեր »\u003d\u003e զանգված (). // հաղորդագրության տողերի զանգվածը);?\u003e

    Եզրակացություն

    Ինչպես տեսնում եք, առաջարկեք ֆունկցիոնալությունը Թեմաներ WordPress: Գուցե - դուք պարզապես պետք է նախեւառաջ մտածեք այն օգտվողների մասին, ովքեր կարող են մի թեմայից մյուսը անցնել: TGM Plugin Activing LixtaBer- ն իրոք իսկապես խելացի միջոց է առաջարկում:

    Ինչ կարծիքի եք այս գործիքի մասին: Երբեւէ օգտագործել եք դա, նախատեսում եք այն օգտագործել ապագայում: Կիսվեք ձեր մտքերով: