Protams, jūs vairāk nekā vienu reizi esat saskāries ar nepieciešamību savai WordPress vietnei pievienot kādu koda daļu, lai pievienotu jaunu funkcionalitāti. Es nerunāju par Google Analytics skriptiem, ko ievietojat sava motīva galvenes daļā. Nē. Es runāju par tiem mazajiem koda fragmentiem, kurus jūs atradāt interneta forumos un nekavējoties skrējāt, lai pievienotu tos savam failam. funkcijas.php.

Būsim godīgi, jūs to esat darījis vismaz vienu reizi, vai ne? Un tas ir saprotams, jo forumā bija rakstīts - pievienojiet šo kodu savas WordPress tēmas functions.php.

Patiesība ir tāda, ka katra internetā atrodamā koda pievienošana funkcijai.php ir tāda ne vienmēr ir laba ideja. Drošāks risinājums būtu izveidot savu pielāgoto mini spraudni ar šo kodu.

Šajā apmācībā mēs jums pateiksim, kādos gadījumos varat pievienot kodu functions.php, un kādos gadījumos labāk izmantot atsevišķu spraudni. Mēs arī parādīsim, kā jūs pats varat izveidot pielāgotu spraudni un pievienot tam savu kodu.

Kas ir functions.php

Ja kādreiz esat pārlūkojis savas WordPress vietnes failus, iespējams, esat saskāries ar vairākiem functions.php failiem. Funkcijas.php fails, par kuru mēs runāsim šajā apmācībā, atrodas mapē: wp-contentthemesyourthemefunctions.php.

Acīmredzot šis ir tas pats fails, kurā tiek saglabātas visas jūsu konkrētā motīva funkcijas un iestatījumi, šobrīd aktīvs. Pievērsiet uzmanību vārdam “aktīvs”, jo tas būs šīs nodarbības galvenais vēstījums.

Kāpēc vienmēr izmantot functions.php ir slikta ideja

Nepārprotiet, funkcijas.php izmantošana maziem koda fragmentiem pāris rindās ir pilnīgi normāla situācija. Tas, ko mēs sakām, ir tas, ka nav laba ideja izmantot functions.php kā repozitoriju pilnīgi visam jūsu pievienotajam kodam. Šis nav universāls risinājums katrai situācijai.

Iemesls #1.

Ja jūsu motīvam būs atjauninājums, jūs zaudēsiet visu, ko ierakstījāt failā functions.php. Es zinu, ko jūs tikko domājāt, bet ir tāda, kas paredzēta tikai šādām situācijām?

Protams, ir. Bet ir arī daudzi cilvēki, kuriem nav ne jausmas, kas ir bērnu tēma. Vai arī ir cilvēki, kuri ir lūguši jums palīdzību, pievienojot savai tēmai koda fragmentu.

Tāpēc šis iemesls ir šajā sarakstā. Ja pievienojat kodu funkcijai.php, neizmantojot bērnu motīvu, šis ir jūsu pirmais sarkanais karogs.

Iemesls #2.

Pat ja esat pareizi konfigurējis un lietojat bērnu motīvu. Kas notiek, ja vēlaties pārslēgties uz citu tēmu? Ceru, ka pievienosiet komentāru katrai izmaiņai, ko veicat savā functions.php failā, jo bez tā pāreja uz citu tēmu būs ārkārtīgi sāpīga. Es domāju, ka jūs sapratāt domu.

Iemesls #3.

Ja vietnei functions.php esat pievienojis kodu, kas nejauši pilnībā izjauc jūsu vietni un jums paliek tukšs balts ekrāns, jums būs nepieciešams FTP klients, lai lejupielādētu bojāto functions.php, rediģētu to, un augšupielādējiet to atpakaļ savā vietnē. Prieks ir tāds.

Kad lietot functions.php

Pareiza functions.php izmantošana pašreiz aktīvajam pakārtotajam motīvam ir derīga opcija. Bet atcerieties, es uzsvēru šo vārdu " aktīvs"?

Ja pievienojat koda daļas, kurām būs jēga, tikai strādājot ar konkrēto tēmu, varat droši izmantot functions.php (bērnu motīvā). Šeit ir daži piemēri, kur tas būtu piemēroti:

  • Cita stila faila (.css) pievienošana jūsu motīvam
  • Ziņas fragmenta garuma maiņa, lai vietne izskatītos labāk
  • Pielāgotu fontu pievienošana pašreizējam motīvam
  • Lokalizācijas faila pievienošana, lai tulkotu pašreizējo motīvu

Citiem vārdiem sakot, ikreiz, kad pievienojat vai maināt kaut ko saistībā ar konkrēto pašreizējo tēmu, varat droši izmantot functions.php.

Kad labāk iztikt bez funkcijām.php

Funkcijas.php izmantošana, lai pievienotu globālākas lietas un funkcijas, kas teorētiski varētu būt nepieciešamas citai tēmai, ir slikta ideja.

Šeit ir pāris piemēri, kad labāk iztikt bez functions.php:

  • Izveidojiet pielāgotus logrīkus, kurus izmantosit bieži
  • Pielāgotu īskodu izveide
  • Koda pievienošana, kas nav atkarīgs no tēmas (Google Analytics kods utt.)

Šādos gadījumos labāk ir saglabāt šo kodu neatkarīgi no tēmas. Un to var izdarīt, izmantojot pielāgotus spraudņus.

Vai tagad domājat par spraudņa izveidi, kad varat rediģēt functions.php? Tas ir pārāk grūti! Ticiet man, tā nav taisnība. Tas tiek darīts ļoti viegli un ātri.

Kā iestatīt pielāgotu spraudni, nevis functions.php

Lai izveidotu savu pielāgoto spraudni koda saglabāšanai, jums ir nepieciešams:

  1. Izveidojiet teksta failu ar savu kodu un saglabājiet to kā .php failu
  2. Iesaiņojiet iegūto .php failu .zip arhīvā
  3. Izvēlnē instalējiet šo arhīvu kā parastu WordPress spraudni Spraudņi → Pievienot jaunu

Tas arī viss, tikai 3 soļi.

1. darbība. Izveidojiet .php failu ar savu kodu

Datorā atveriet Notepad un ielīmējiet šādu tekstu:

Protams, rindā Spraudņa nosaukums varat izmantot spraudņa nosaukumu:

Saglabājiet failu un piešķiriet tam unikālu nosaukumu, lai WordPress nesajauktu jūsu spraudni ar jau instalētajiem. Piemēram: wpcafe-custom-functions.php.

Jā, saglabāšanas laikā neaizmirstiet atlasīt faila tipu “Visi faili” un pievienot paplašinājumu .php:

2. darbība. Izveidojiet .zip arhīvu

Es domāju, ka šeit nav nepieciešams paskaidrojums. Vienkārši izveidojiet .zip arhīvu ar savu failu, izmantojot jebkuru ērtu arhivētāju.

3. darbība. Instalējiet kā parastu spraudni

Vienkāršākā daļa. Vienkārši dodieties uz savu WordPress administratoru vietnē Spraudņi → Pievienot jaunu un ielādējiet savu arhīvu kā parastu spraudni.

Kad to aktivizēsit, visu pārējo instalēto spraudņu sarakstā varēsit redzēt savu jauno spraudni:

Kā pievienot savu kodu

Lai pievienotu savu koda fragmentu, vienkārši ielīmējiet to izveidotajā .php failā. Vai arī jūs vienmēr varat izveidot citu atsevišķu spraudni divām dažādām funkcijām.

Piemēram, šādi izskatītos jūsu .php fails, ja vēlaties izveidot īskodu "Sveika pasaule!":

Šie komentāri nekādā veidā neietekmē jūsu koda veiktspēju vai spraudņa izpildes ātrumu. Taču tie atvieglos navigāciju un atvieglos katras pievienotās funkcijas darbību.

Vienkārši ievietojiet komentāru ar slīpsvītru un zvaigznītes sintakse: /* jūsu komentārs */

Pēc izmaiņu veikšanas kodā varat atkārtoti augšupielādēt .php failu, izmantojot FTP, vai vienkārši izveidot jaunu .zip arhīvu un augšupielādēt to kā jaunu spraudni un izdzēst veco.

Citi veidi, kā izvairīties no funkciju.php rediģēšanas

Kopumā, ja esat pietiekami pārliecināts par savām spējām un zināt, kā pievienot kodu functions.php, jums nevajadzētu rasties grūtībām ar pielāgotiem spraudņiem. Šeit nav nekā sarežģīta.

Bet mēs lieliski saprotam, ja nevēlaties ar to visu nodarboties manuāli. Galu galā tas ir WordPress. Tādēļ jums var būt noderīgi izmantot bezmaksas spraudni Code Snippets, kas ļauj ērti pievienot vietnei papildu kodu:

Izmantojot šo spraudni, jūs varat pievienot dažādus fragmentus ar kodu, piešķirt tiem nosaukumu, aprakstu un selektīvi aktivizēt un atspējot vienu vai otru koda daļu.

Vēl viena lieliska funkcija ir tā, ka varat importēt/eksportēt savus koda fragmentus no vienas vietnes uz otru.

Rezultāti

Tas var šķist maza detaļa, taču pareizi ievietojot papildu kodu, turpmāk bez problēmām varēsiet pārslēgties starp citām tēmām. Varat arī iespējot vai atspējot šo vai citu funkcionalitāti atsevišķi, ja katru papildu funkciju sadalāt starp atsevišķiem spraudņiem.

Tātad šī metode patiešām ir pelnījusi uzmanību.

8 atbildes

Varat izmantot veidni Observer. Vienkāršs funkcionāls veids, kā to paveikt:

Secinājums:

Šī ir mana TRAKĀ lietojumprogramma 4 + 5 = 9 4 * 5 = 20

Piezīmes:

Šajā avota koda piemērā visi spraudņi ir jādeklarē pirms faktiskā avota koda, kuru vēlaties paplašināt. Esmu iekļāvis piemēru, kā rīkoties ar vienu vai vairākām spraudnim nodotajām vērtībām. Grūtākais ir uzrakstīt faktisko dokumentāciju, kurā ir uzskaitīti argumenti, kas tiek nodoti katram āķim.

Šis ir tikai viens veids, kā izveidot spraudņu sistēmu PHP. Ir labākas alternatīvas, iesaku skatīt WordPress dokumentāciju, lai iegūtu plašāku informāciju.

Atvainojiet, šķiet, ka pasvītras tiek aizstātas ar HTML Markdown objektiem? Varēšu atkārtoti publicēt šo kodu, tiklīdz šī kļūda būs novērsta.

Rediģēt: Nekad, tas parādās tikai tad, kad rediģējat

Tātad, pieņemsim, ka jums nav nepieciešams Observer modelis, jo tam ir jāmaina klases metodes, lai veiktu klausīšanās uzdevumu, un jūs vēlaties kaut ko vispārīgu. Un pieņemsim, ka nevēlaties izmantot paplašināto mantojumu, jo, iespējams, jau esat mantojis savu klasi no citas klases. Vai nebūtu lieliski, ja būtu vispārīgs veids, kā bez lielām pūlēm padarīt jebkuru klasi pieslēdzamu? Lūk, kā to izdarīt:

_Class = get_class(&$RefObject); $this->_RefObject = $RefObject; ) publiskā funkcija __set($sProperty,$mixed) ( $sPlugin = $this->_Class . "_" . $sProperty . "_setEvent"; if (is_callable($sPlugin)) ( $mixed = call_user_func_array($sPlugin, $ jaukts); ) $this->_RefObject->$sProperty = $jaukts; ) publiskā funkcija __get($sProperty) ( $asItems = (masīvs) $this->_RefObject; $mixed = $asItems[$sProperty]; $sPlugin = $this->_Class . "_" . $sProperty . "_getEvent"; if (is_callable($sPlugin)) ( $mixed = call_user_func_array($sPlugin, $mixed); ) atgriež $mixed; ) publiskā funkcija __call($ sMethod,$mixed) ( $sPlugin = $this->_Class . "_" . $sMethod . "_beforeEvent"; if (is_callable($sPlugin)) ( $mixed = call_user_func_array($sPlugin, $mixed); ) if ( $mixed != "BLOCK_EVENT") ( call_user_func_array(array(&$this->_RefObject, $sMethod), $jaukts); $sPlugin = $this->_Class . "_" . $sMethod . "_afterEvent"; if ( is_callable($sPlugin)) ( call_user_func_array($sPlugin, $mixed); ) ) ) //beigu klase Spraudņa klase Pluggable extensions Pluggable ( ) //beigu klase Pluggable /////////////// ////// // 2. DAĻA //////////////////// klase Suns ( publisks $Name = ""; publiskās funkcijas miza (&$sHow) ( atbalss "$sHow
\n"; ) publiskā funkcija sayName() ( echo "
\nMans vārds ir: " . $this->Name ."
\n"; ) ) //beigu klase Suns $Suns = jauns suns(); /////////////////////// 3. DAĻA /////// ///////////// $PDog = new Pluggable($Dog); funkcija Dog_bark_beforeEvent(&$mixed) ( $mixed = "Woof"; // Ignorēt "ņau" ar "Woof" / /$mixed = "BLOCK_EVENT"; // ja vēlaties bloķēt notikumu, atgriež $mixed; ) funkcija Dog_bark_afterEvent(&$mixed) ( echo $mixed; // parādīt ignorēšanu ) funkcija Dog_Name_setEvent(&$mixed) ( $mixed = "Coco"; // ignorēt "Fido" ar "Coco" atgriež $mixed; ) funkcija Dog_Name_getEvent(&$mixed) ( $mixed = "Different"; // ignorēt "Coco" ar "Different" atgriež $mixed; ) //////////////////// // 4. DAĻA //////////////////// $PDog-> Vārds = "Fido"; $PDog->Bark("meow"); $PDog->SayName(); echo "Mans jaunais vārds ir: " . $PDog->Nosaukums;

Pirmā daļa ir tā, ko varat iespējot, PHP skripta augšdaļā izmantojot izsaukumu request_once(). Tas ielādē nodarbības, lai padarītu kaut ko pievienojamu.

2. daļā, kur mēs ielādējam klasi. Piezīme. Klasei man nekas īpašs nebija jādara, kas būtiski atšķiras no Observer modeļa.

3. daļā, kur mēs pārslēgsim savu klasi uz "spraudni" (t.i., atbalsta spraudņus, kas ļauj ignorēt klases metodes un rekvizītus). Piemēram, ja jums ir tīmekļa lietojumprogramma, iespējams, ka jums ir spraudņu reģistrs, un jūs varat aktivizēt spraudņus šeit. Ņemiet vērā arī funkciju Dog_bark_beforeEvent(). Ja es iestatīšu $mixed = "BLOCK_EVENT" pirms atgriešanas priekšraksta, tas bloķēs suņa riešanu un bloķēs arī Dog_bark_afterEvent, jo notikuma nebūs.

4. daļā tas ir parastais operētājsistēmu kods, taču ņemiet vērā, ka tas, kas, jūsuprāt, nedarbosies, ir tas, kā tas darbojas. Piemēram, suns savu vārdu nepaziņo kā "Fido", bet gan kā "Coco". Suns nesaka "jau", bet gan "woo". Un, ja vēlaties vēlāk meklēt suņa vārdu, jūs atklāsiet, ka tas ir "Dažādi", nevis "Coco". Visas šīs ignorēšanas tika ieviestas 3. daļā.

Tātad, kā tas darbojas? Nu, izslēgsim eval() (ko visi saka, ka tas ir "ļauns") un izslēgsim, ka šī nav Observer veidne. Tādējādi tas darbojas ar slēptu tukšu klasi, ko sauc par Pluggable, kurā nav ietvertas suņu klases izmantotās metodes un īpašības. Tādējādi, kad tas notiks, mums tiks izmantotas maģiskas metodes. Tāpēc 3. un 4. daļā mēs saistāmies ar objektu, kas atvasināts no klases Pluggable, nevis ar pašu klasi Dog. Tā vietā mēs ļaujam spraudņu klasei "pieskarties" objektam Suns mūsu vietā. (Ja šis ir kāds dizains, par kuru es nezinu, lūdzu, dariet man zināmu.)

Visbiežāk tiek izmantota āķa un klausītāja metode, taču ir arī citas lietas, ko varat darīt. Atkarībā no jūsu lietojumprogrammas lieluma un tā, kurš vēlas redzēt kodu (vai tas būs FOSS skripts vai kaut kas iekšā), lielā mērā ietekmēs to, kā vēlaties atļaut spraudņus.

kdeloach ir jauks piemērs, taču tā ieviešana un āķa funkcija ir nedaudz nedrošas. Es lūdzu jūs sniegt plašāku informāciju par jūsu vēstules php lietojumprogrammas būtību un to, kā jūs redzat spraudņus.

1 uz kdeloach no manis.

Lūk, es izmantoju pieeju, kas ir mēģinājums kopēt no Qt signālu/slotu mehānisma, sava veida Observer modeli. Objekti var izstarot signālus. Katram signālam sistēmā ir identifikators - tas sastāv no id + sūtīšanas objekta.Katru signālu var piesaistīt uztvērējiem, kas ir vienkārši "izsaucamie" Jūs izmantojat autobusu klasi, lai nodotu signālus ikvienam, kurš ir ieinteresēts tos saņemt. Kad kaut kas notiek, jūs sūtāt signālu. Tālāk ir sniegts piemērs un īstenošanas piemērs

Pieslēgties(); ?>

Es uzskatu, ka vienkāršākais veids ir sekot Džefa padomam un apskatīt esošo kodu. Mēģiniet apskatīt Wordpress, Drupal, Joomla un citas labi zināmas PHP SPS, lai redzētu, kā izskatās un darbojas to API. Tādā veidā jūs pat varētu iegūt idejas, par kurām jūs, iespējams, iepriekš neesat domājis, lai padarītu lietas nedaudz biezākas.

Tiešāka atbilde būtu rakstīt vispārīgus failus, kurus tie iekļautu iekļautajā failā, lai nodrošinātu ērtu lietošanu. Tas tiks iedalīts kategorijās un NETIKS sniegts vienā "hooks.php" MASSIVE failā. Esiet piesardzīgs, jo galu galā tajos iekļautajiem failiem ir arvien vairāk atkarību un funkcionalitātes. Mēģiniet ierobežot API atkarības. I.E. ir mazāk failu, lai tos iekļautu.

7. maija versija PHP tika izlaists nesen 2015. Jauna kārta šīs programmēšanas valodas izstrādē ir devusi daudz iespēju visiem, kas to izmanto PHP. No jaunās versijas priekšrocībām jāizceļ ātrums. Tātad, pēc izstrādātāju domām, skriptu ātrums ir PHP 7, salīdzinot ar iepriekšējām versijām, ir gandrīz dubultojies. Šajā sakarā daudzi to vietņu īpašnieki, kurās ir instalētas vecākas versijas PHP, vēlaties pārslēgties uz jaunu.

Kāpēc pārbaudīt saderību?

Jāatzīmē, ka pirms versijas maiņas jūsu hostinga vadības panelī PHP uz jaunāku un ātrāku, jums jāpārbauda WordPress vietnes saderība ar to, proti, motīvi un spraudņi. Šī vajadzība rodas tāpēc, ka parasti jaunajās programmatūras versijās dažas funkcijas tiek pievienotas, bet dažas pārstāj pastāvēt. Ja spraudnis vai motīvs izmanto funkcijas vai metodes, kuras jaunajā versijā neeksistē, tas liecina par kļūdu, kas var traucēt visas vietnes darbību.

Kā pārbaudīt saderību ar PHP 7.0?

PHP saderības pārbaudītāja spraudnis

PHP saderības pārbaudītāja spraudnis ļauj skenēt visu vietni un norādīt, kuri no tās komponentiem (motīvi, spraudņi) nav saderīgi ar atlasīto versiju PHP. Vispirms jums tas jāinstalē un jāaktivizē, pēc tam dodieties uz administratora paneli Rīki -> PHP saderība.

Kā redzat, spraudnis piedāvā ļoti skaidrus iestatījumus. Lai sāktu pārbaudi, ir jāizvēlas versija PHP, par saderību, ar kuru vēlaties pārbaudīt vietni (bloķēt PHP versija). Ērta spraudņa funkcija ir atlasīt pārbaudāmo komponentu statusu. Ir pieejamas divas izvēles iespējas: vai nu pārbaudīt aktīvos motīvus un spraudņus, vai neaktīvos (lauks Spraudņa/motīva statuss). Lai sāktu pārbaudi, jānospiež poga Skenējiet vietni vēlreiz.

Testa rezultātu var arī lejupielādēt teksta failā, noklikšķinot uz pogas Lejupielādēt ziņojumu.

Sveiki, dārgie draugi un emuāra viesi! Šodienas ieraksts noderēs gan iesācējiem, gan pieredzējušiem tīmekļa pārziņiem, kuri vēl nezina, kā lapās, ziņās un sānjoslās ievietot PHP kodu programmā Wordpress, lai to varētu izpildīt WordPress dzinējs.

Šajā rakstā es vēlos pastāstīt par to un kā jūs varat ievietot php kodu WordPress, neizmantojot spraudni un spraudni. Tāpat jūs uzzināsiet visas nianses un smalkumus, plusus un mīnusus, kas jūs varētu sagaidīt, veicot šo funkciju WordPress.

Dažreiz, veidojot vietni, ir vienkārši nepieciešams ievietot PHP kodu WordPress ziņās, lapās vai sānjoslās. Es pats ar to saskāros vienreiz un, kad mēģināju vienkārši ielīmēt php kodu sānjoslā, tas tika parādīts kā vienkāršs teksts. Tas ir, tas netika izpildīts kā funkcija.

Kāpēc jums ir jāpalaiž PHP kods pakalpojumā WordPress ziņās, lapās un sānjoslās? Katrs tīmekļa pārzinis izlemj pats! Piemēram, savos ierakstos bija jāievieto kaut kāds PHP kodā izveidots skripts, vai arī sānjoslā jāparāda kāda neparasta izvēlne, ko nevar zināt.

Tātad, lai WordPress parādītu izpildāmo php kodu, jums ir jāveic dažas darbības, un tagad mēs uzzināsim, kuras no tām...

Kā parādīt izpildāmu PHP kodu programmā WordPress bez spraudņa?

Šī PHP koda izvadīšanas metode uz WordPress būs piemērota tiem, kas dedzīgi oponenti liek savos resursos instalēt nevajadzīgus spraudņus. Un tagad jūs uzzināsit, kā to izdarīt.

Lai to izdarītu, failā būs jāveic dažas izmaiņas funkcijas.php jūsu aktīvā vietnes tēma. Vienkārši pievienojiet šo kodu pašās beigās pirms " ?> " :

/* lai ievietotu izpildāmu php kodu WordPress rakstos/lapās, izmantojiet šo īso kodu: code */ function exec_php($matches)( eval("ob_start();".$matches."$inline_execute_output = ob_get_contents();ob_end_clean()) ;"); atgriež $inline_execute_output; ) funkcija inline_php($content)( $content = preg_replace_callback("/\((.|\n)*?)\[\/exec\]/", "exec_php", $content ); $content = preg_replace("/\((.|\n)*?)\[\/exec\]/", "$1", $saturs; atgriež $saturs; ) add_filter("saturs", " inline_php", 0);

Pēc tam savās ziņās un rakstos izmantojiet šo īskodu, lai ievietotu izpildāmo php kodu:

Šeit ir php kods

  • Neliels precizējums, kas ir ļoti svarīgs punkts pareizai php koda parādīšanai un izvadīšanai jūsu ierakstos vietnē!

Pārliecinieties, ka, iegulstot PHP kodu īskodā, neizmantojiet šo: ""! Tas ir, jūsu izpildāmajam php kodam, kas ievietots īskodā, vajadzētu izskatīties šādi ne šādā veidā " " , A kā šis "atbalss datums ("Y");". Un galu galā, ielīmējot to īskodā, tas izskatīsies šādi:

Atbalss datums ("Y");

  • Vēl viens brīdinājums iesācējiem tīmekļa pārziņiem!

Šādā veidā izpildot PHP kodu savos WordPress ierakstos, jūsu dzinējs kļūst neaizsargāts pret visa veida hakeriem - krekeriem, kuri to var izmantot saviem savtīgiem mērķiem. Lai to izdarītu, jums ir jāmaina vērtība " izpild" kodā, kas ir ievietots failā funkcijas.php savējiem, kas ir zināmi tikai tev! Un attiecīgi izmantojiet to pašu vērtību īskodus ievietot amatos.

Ar šo darbību jūs varat izvairīties no tā, ka kāds varēs izmantot šīs funkcijas izmantošanas rezultātā radušos potenciālo “caurumu” - ievietojiet PHP kodu Wordpress.

Tas viss attiecas uz php koda ievietošanu programmā WordPress, neizmantojot spraudni.

Tagad noskaidrosim, kā WordPress var ievietot arī php kodu, bet izmantojot spraudni...

Kā iegult izpildāmu PHP kodu programmā WordPress, izmantojot spraudni Exec-PHP?

Ir daudz spraudņu PHP koda ievietošanai WordPress izpildei. Taču ne visi no tiem ir droši, jo, tos uzstādot un lietojot, dzinējā parādās ievainojamības, kuras var izmantot negodīgi hakeri.

Tagad es jums pastāstīšu par drošāko un funkcionālāko spraudni php koda izpildei programmā WordPress - tas ir Izpildīt-PHP. Vispirms jums tas ir jālejupielādē vai no oficiālā WordPress vietne vai vienkārši instalējiet no vietnes administratora paneļa. Es ceru, ka jūs zināt, kā to izdarīt?! Ja nezini, tad paskaties. Ir arī video klips, kurā visu var redzēt savām acīm. Lai gan mēs runājam par cita spraudņa instalēšanu, princips ir vienāds.

Pēc spraudņa instalēšanas un aktivizēšanas jūsu galvenajā administratora izvēlnē tiks parādīts:

Noklikšķiniet uz tā, un jūs tiksit novirzīts uz:

Atlasiet šeit, lai izpildītu/ignorētu PHP kodu logrīkos, un viss.

Pēc tam, lai ierakstos un lapās varētu ievietot izpildāmu PHP kodu programmā WordPress, jums savā profilā ir jāatzīmē izvēles rūtiņa - :

Visi. Tagad savām lapām un ziņām varat pievienot jebkuru PHP kodu programmā WordPress, un tas tiks izpildīts!

Paldies par jūsu uzmanību! Veiksmi visiem! Uz tikšanos!

Ikviens, kurš pārzina WordPress, ir dzirdējis par motīvu (veidnes) functions.php failu. Taču ne visi labi saprot tā mērķi, redzot to tikai kā failu, kurā glabājas dažādas PHP funkcijas. Internetā, tāpat kā manā vietnē, bieži tiek ieteikts šim failam pievienot PHP kodu. Tomēr ne katrs kods darbosies šim failam. Ne tāpēc, ka tas nedarbosies, bet tāpēc, ka tas neatbilst lietošanas loģikai.

Tāpat, rediģējot functions.php, iesācēji pieļauj kļūdas, kuru dēļ vietne pārstāj darboties.

Šajā rakstā es mēģināšu apsvērt visus šos punktus: kad lietot functions.php un kad labāk to nedarīt, kādas kļūdas var rasties, rediģējot functions.php.

Funkcijas functions.php

Functions.php atrodas motīva mapē un tiek ielādēts katru reizi, skatot vietnes ārējo daļu, administrēšanas panelī un pat AJAX pieprasījumu laikā. Nav gadījuma, kad functions.php netiks iekļauts, un tas paver plašas iespējas izstrādātājiem.

Piemēram, tālāk norādītais kods, kas ievietots motīva failā functions.php, paplašinās motīva iespējas, iespējojot ziņu sīktēlu atbalstu:

Add_action("after_setup_theme", "wp_kama_theme_setup"); function wp_kama_theme_setup())( // Sīktēlu atbalsts add_theme_support("post-thumbnails"); )

Vēl viens piemērs, kods aizstās tekstu WordPress administratora paneļa kājenē ar datiem par datu bāzes pieprasījumu skaitu, lapas ģenerēšanas laiku un atmiņas lietojumu:

## Dati par pieprasījumu skaitu datu bāzei admin panelī add_filter("admin_footer_text", "wp_usage"); // administratora panelī add_filter("wp_footer", "wp_usage"); // tīmekļa vietnē funkcija wp_usage())( echo sprintf(__("SQL: %d in %s sec. %s MB", "km"), get_num_queries(), timer_stop(0, 3), round(memory_get_peak_usage () /1024/1024, 2));)

Functions.php vs spraudņi

- "Spraudņi darbojas lēnāk nekā kods functions.php failā," saka nezinātājs - tā nav taisnība!

Teorētiski koda ievietošana failā functions.php ir tas pats, kas spraudņa instalēšana, taču tā nav viena un tā pati lieta. Galu galā, mainot tēmu, mēs iegūsim pavisam citas funkcijas.php un visas veiktās izmaiņas tiks zaudētas, bet spraudnis paliks neatkarīgi no tā, cik daudz tēma tiks mainīta. Šo iemeslu dēļ mums ir jāatsaucas uz functions.php failu. Ja pievienotā funkcionalitāte attiecas ne tikai uz motīvu, bet arī uz vietni kopumā, jums vajadzētu padomāt par tās pievienošanu kā spraudni.

Otrais piemērs iepriekš ir “Dati par datu bāzes vaicājumu skaitu administratora paneļa kājenē”. Loģiski, ka tas nav piemērots izmantošanai functions.php failā. Jo, mainot veidni, mēs pazaudēsim šo funkcionalitāti, taču tā tiek izmantota admin panelī un ir nepieciešama neatkarīgi no izmantotās tēmas.

Tāpēc izņemsim to no functions.php un padarīsim to par spraudni — tas ir vienkārši!

Lai izveidotu spraudni, ir jāizveido fails ar tālāk norādīto kodu (faila nosaukums var būt jebkas), jāpievieno tas spraudņa direktorijā wp-content/plugins/ un jāaktivizē spraudnis admin panelī:

Ja nevēlaties administrēšanas panelī redzēt citu spraudni, varat izmantot obligāti lietojamos spraudņus.

Ko patiesībā dara functions.php?

Kā jau rakstīju augstāk: functions.php ir nepieciešams, lai paplašinātu tēmas funkcionalitāti un tikai tam! Šajā failā ir jāpievieno jebkurš kods, kas nepieciešams pašai veidnei, bet ne visai vietnei.

Ja kādā resursā jums tiek lūgts pievienot kodu failam functions.php, un koda funkcija nav tieši saistīta ar veidni, tad neesiet slinks un izveidojiet spraudni no šī koda, un, iespējams, nākotnē jūs to darīsit. izvairīties no iepriekš pievienotās funkcionalitātes negaidītas zaudēšanas.

Kā tiek ielādēts functions.php

Functions.php tiek iekļauts pašreizējās tēmas inicializācijas laikā pēc tam, kad ir iespējotas visas WordPress funkcijas un visi aktīvie spraudņi. Es īsi aprakstīšu WordPress ielādes hronoloģiju, kurā varat redzēt, kad ir pievienoti svarīgi faili:

Index.php wp-blog-header.php wp-load.php wp-config.php wp-settings.php // Ir savienotas visvienkāršākās funkcijas (savienojums ar $wpdb datu bāzi un filtru sistēmu) // Pamatfiltri ir savienots // SHORTINIT: ielādes apturēšana, kur ir tikai visvienkāršākais: if (SHORTINIT) return false; // tiek pieslēgta visa WordPress vide: pamatfunkcijas, filtri // ir pieslēgti obligātie spraudņi, tad tiek iedarbināts notikums: do_action("muplugins_loaded"); // tiek pieslēgti aktivizētie spraudņi, tad tiek iedarbināts notikums: do_action("plugins_loaded"); // ir iestatīti globālie mainīgie: wp_the_query, wp_query, wp_rewrite, wp, wp_widget_factory, wp_roles ... do_action("setup_theme"); // instalē pašreizējo motīvu // savieno motīva failu >>>>>>>>>>>>> functions.php<<<<<<<<<<<< do_action("after_setup_theme"); // событие, когда среда WP, все плагины и тема полностью подключены, но на экран еще ничего не выведено: do_action("init"); // проверка статуса сайта для мультисайтовой сборки // тоже самое что init только после проверки статуса (до этой строки работа PHP может не дойти) do_action("wp_loaded"); wp() // заполняет основной запрос WP и все глобальные переменные связанные с ним wp-includes/template-loader.php // подключает нужный файл шаблона

WordPress un jo īpaši functions.php ielādes process ir labi ilustrēts šajā attēlā:

WordPress ielādes shēma

Kļūdas functions.php, ielīmējot kodu

Esmu vairākkārt saskāries ar jautājumiem par kļūdām, piemēram: "Pēc koda instalēšanas failā functions.php vietne pārstāja darboties - balts ekrāns. Kas man jādara?" Pats reiz sastapos ar ko līdzīgu.

Man daži šīs problēmas risinājumi ilgu laiku palika noslēpums - likās, ka es neko nedaru un pat nebija dejas ar tamburīnu, bet reiz tas viss izdevās. Kāpēc tas notiek? Apskatīsim iespējamās situācijas, kuru dēļ vietne var "izlauzties" un to skaidrojumu:

    Jūs ievietojat gatavo kodu - vietne pārstāj darboties.

  1. Jūs rediģējat functions.php - vietne pārstāj darboties.

Visbiežāk tas ir jautājums par PHP atvēršanas un aizvēršanas tagiem. Parasti, ja kodā, kuru ievietojat, šie tagi ir sākumā un beigās, tie ir jānoņem. Turklāt failā functions.php ekrānā nevajadzētu parādīt tekstu (HTML kodu vai citu saturu). Teksta izvade ir atļauta tikai funkcijās, kas vēlāk tiks izmantotas veidnē vai ir pievienotas āķiem (sīkāku informāciju skatiet tālāk).

Iepriekš nav atļautas rakstzīmes, ieskaitot neredzamās rakstzīmes (rindas pārtraukums), jo functions.php ir savienots pirms http galveņu iestatīšanas (šādas galvenes pārraida dažādus datus, piemēram, ka šis ir html dokuments; ka utf-8 kodējums atšķiras). Saskaņā ar PHP noteikumiem saturs ir jāparāda ekrānā pēc galveņu nosūtīšanas. Un viss, kas ir ārpusētas ir saturs - ekrānā redzamais teksts, pat neredzamā \n rakstzīme. Tāpēc šis teksts rada kļūdu.

Lai izvairītos no kļūdām, ņemiet vērā 4 punktus:

#1 Pareiza ligzdošana

Piemēram, mums bija šāda struktūra:

.......šeit ir kods......... ?>

Pareizi šādi:

#2 Pirms tam nav rindiņu pārtraukumu, atstarpju, teksta

Šis kods radīs kļūdu:

Bet šis nav:

Loģiskāk ir to rakstīt šādi:

Gadās, ka funkcijas.php pašās beigās tiek ievietots rindiņas pārtraukums, un tad tā kļūst par reālu problēmu, jo it kā viss ir pareizi, bet vietne nedarbojas. Patiesībā pēc?> vai pirms

šeit ir tukša rinda

Šī iemesla dēļ daudzi izstrādātāji vispār noņem noslēdzošo tagu ?>; tas ir pieņemams PHP. Es iesaku vienmēr rīkoties šādi:

# 3 IzmantojietPHP funkciju iekšpusē

Ja funkcijas.php ir funkcija, tad tagus var izmantot šīs funkcijas iekšpusē, piemēram, lai funkcijā vizuāli izceltu HTML kodu:

šis ir html kods

Fakts ir tāds, ka šajā gadījumā funkcija ir tikai reģistrēta un neveic nekādas darbības. Viss, kas atrodas funkcijā (starp ( )), nedarbojas, kamēr šī funkcija nav izsaukta, un šādas funkcijas parasti tiek izsauktas no veidnes vai caur filtriem pēc HTTP galveņu nosūtīšanas. Tātad šajā piemērā mēs varam ignorēt rindu pārtraukumus un izmantot ?> un

#4 Kodēšana

Vēl viena piezīme saistībā ar failu functions.php: iestatiet faila kodējumu uz UTF-8 (UTF-8 bez BOM). Pretējā gadījumā, ja funkcijas failā ir teksts kirilicā, tas tiks parādīts ar nesaprotamām rakstzīmēm: blēņas, skricelējumi - sauciet to, kā vēlaties.