Kindlasti olete rohkem kui korra kohanud vajadust lisada oma WordPressi saidile mõni koodijupp, et lisada uusi funktsioone. Ma ei räägi Google Analyticsi skriptidest, mille sisestate oma teema päise ossa. Ei. Ma räägin nendest väikestest koodijuppidest, mille leidsite Interneti-foorumitest ja jooksite kohe oma faili lisama. funktsioonid.php.

Olgem ausad, olete seda vähemalt korra teinud, eks? Ja see on arusaadav, sest see oli foorumis kirjas – lisage see kood oma WordPressi teema faili functions.php.

Tõde on see, et iga Internetist leitud koodi lisamine funktsioonidesse.php on vajalik pole alati hea mõte. Ohutum lahendus oleks luua selle koodiga oma kohandatud miniplugin.

Selles õpetuses räägime teile, millistel juhtudel saate failile functions.php koodi lisada ja millistel juhtudel on parem kasutada eraldi pluginat. Samuti näitame, kuidas saate ise luua kohandatud pistikprogrammi ja lisada sellele oma koodi.

Mis on funktsioonid.php

Kui olete kunagi oma WordPressi saidi faile läbi vaadanud, olete võib-olla kohanud mitut funktsiooni.php faili. Fail functions.php, millest selles õpetuses räägime, asub kaustas wp-contentthemesyourthemefunctions.php.

Ilmselgelt on see sama fail, mis salvestab kõik teie konkreetse teema funktsioonid ja sätted, hetkel aktiivne. Pöörake tähelepanu sõnale "aktiivne", sest see on selle õppetunni põhisõnum.

Miks on funktsioonide.php kasutamine alati halb mõte

Ärge saage valesti aru, funktsioonide.php kasutamine väikeste paarirealiste koodijuppide jaoks on täiesti tavaline olukord. Me ütleme, et ei ole hea mõte funktsioonis.php kasutada absoluutselt kogu teie lisatud koodi hoidlana. See ei ole kõigile olukorrale sobiv lahendus.

Põhjus nr 1.

Kui teie teemat värskendatakse, kaotate kõik, mis faili functions.php kirjutasite. Ma tean, mida sa just mõtlesid – aga kas see on just selliste olukordade jaoks?

Muidugi on. Kuid on ka palju inimesi, kellel pole õrna aimugi, mis on lasteteema. Või on inimesi, kes on palunud teilt abi oma teemale koodilõigu lisamisel.

Sellepärast on see põhjus selles loendis. Kui lisate faili functions.php koodi ilma alamteemat kasutamata, on see teie esimene punane lipp.

Põhjus nr 2.

Isegi kui olete lapseteema õigesti konfigureerinud ja kasutate seda. Mis juhtub, kui soovite lülituda teisele teemale? Loodan, et lisate kommentaari igale failis functions.php tehtud muudatusele, sest ilma selleta on teisele teemale üleminek äärmiselt valus. Ma arvan, et saate ideest aru.

Põhjus nr 3.

Kui lisasite faili functions.php koodi, mis ootamatult rikub teie saidi täielikult ja teile jääb tühi valge ekraan, vajate katkise funktsiooni.php allalaadimiseks, redigeerimiseks, FTP-klienti, ja laadige see oma saidile tagasi. Rõõm on selline.

Millal funktsioonis.php kasutada

Funktsioonide.php õige kasutamine hetkel aktiivse alamteema jaoks on sobiv valik. Kuid pidage meeles, ma rõhutasin seda sõna " aktiivne"?

Kui lisate kooditükke, millel on mõtet ainult selle konkreetse teemaga töötades, võite julgelt kasutada functions.php-d (alateema puhul). Siin on mõned näited, kus see oleks asjakohane:

  • Teema jaoks teise stiilifaili (.css) lisamine
  • Postituse väljavõtte pikkuse muutmine saidi paremaks väljanägemiseks
  • Kohandatud fontide lisamine praegusele teemale
  • Lokaliseerimisfaili lisamine praeguse teema tõlkimiseks

Teisisõnu, kui lisate või muudate midagi, mis on seotud konkreetse praeguse teemaga, võite turvaliselt kasutada functions.php-d.

Millal on parem teha ilma funktsioonideta.php

Functions.php kasutamine globaalsete asjade ja funktsioonide lisamiseks, mida teoreetiliselt mõne teise teema jaoks vaja võib minna, on halb mõte.

Siin on paar näidet, millal on parem teha ilma funktsioonideta.php:

  • Looge kohandatud vidinaid, mida sageli kasutate
  • Kohandatud lühikoodide loomine
  • Teemast mittesõltuva koodi lisamine (Google Analyticsi kood jne)

Sellistel juhtudel on parem see kood salvestada olenemata teie teemast. Ja saate seda teha kohandatud pistikprogrammidega.

Kas mõtlete nüüd plugina loomise üle mõistatustele, kui saate funktsioonis.php redigeerida? See on liiga raske! Uskuge mind, see pole tõsi. Seda tehakse väga lihtsalt ja kiiresti.

Funktsioonide.php asemel kohandatud pistikprogrammi seadistamine

Koodi salvestamiseks oma kohandatud pistikprogrammi loomiseks vajate:

  1. Looge oma koodiga tekstifail ja salvestage see .php-failina
  2. Pakkige saadud .php-fail ZIP-arhiivi
  3. Installige see arhiiv menüüsse tavalise WordPressi pistikprogrammina Pluginad → Lisa uus

See on kõik, vaid 3 sammu.

Samm 1. Looge oma koodiga .php-fail

Avage arvutis Notepad ja kleepige järgmine tekst:

Loomulikult saate plugina nime real kasutada oma nime:

Salvestage fail ja andke sellele kordumatu nimi, et WordPress ei segaks teie pistikprogrammi juba installitud pistikprogrammidega. Näiteks: wpcafe-custom-functions.php.

Jah, ärge unustage salvestamisel valida failitüüpi "Kõik failid" ja lisada .php laiendus:

2. toiming. Looge ZIP-arhiiv

Ma arvan, et siin pole selgitust vaja. Lihtsalt looge oma failiga ZIP-arhiiv, kasutades mis tahes mugavat arhiivi.

Samm 3. Installige tavalise pistikprogrammina

Lihtsaim osa. Lihtsalt minge oma WordPressi administraatori juurde aadressil Pluginad → Lisa uus ja laadige oma arhiiv tavalise pistikprogrammina.

Kui olete selle aktiveerinud, näete oma uut pistikprogrammi kõigi teiste installitud pistikprogrammide loendis:

Kuidas lisada oma koodi

Oma koodilõigu lisamiseks kleepige see lihtsalt loodud .php-faili. Või võite alati teha teise eraldi plugina kahe erineva funktsiooni jaoks.

Näiteks näeks teie .php-fail välja selline, kui soovite luua lühikoodi "Tere maailm!"

Need kommentaarid ei mõjuta mingil moel teie koodi jõudlust ega pistikprogrammi täitmiskiirust. Kuid need hõlbustavad navigeerimist ja aitavad meeles pidada, mida iga lisatud funktsioon teeb.

Pange oma kommentaar lihtsalt kaldkriipsu ja tärniga süntaksisse: /* sinu kommentaar */

Pärast koodis muudatuste tegemist saate .php-faili FTP kaudu uuesti üles laadida või lihtsalt luua uue ZIP-arhiivi ja laadida selle üles uue pluginana ning kustutada vana.

Muud võimalused funktsioonide.php redigeerimise vältimiseks

Üldiselt, kui olete oma võimetes piisavalt kindel ja teate, kuidas failile functions.php koodi lisada, ei tohiks teil kohandatud pistikprogrammidega raskusi tekkida. Siin pole midagi keerulist.

Kuid me mõistame suurepäraselt, kui te ei soovi seda kõike käsitsi nokitseda. Lõppude lõpuks on see WordPress. Seetõttu võib osutuda kasulikuks kasutada tasuta pluginat Code Snippets, mis võimaldab hõlpsasti saidile lisakoodi lisada:

Selle pluginaga saad lisada erinevaid koodijuppe, anda neile pealkirja, kirjeldust ning valikuliselt aktiveerida ja keelata üht või teist koodijuppi.

Veel üks lahe funktsioon on see, et saate oma koodilõike saitide vahel importida/eksportida.

Tulemused

See võib tunduda väikese detailina, kuid lisakoodi korrektne paigutamine võimaldab teil tulevikus ilma probleemideta muude teemade vahel lülituda. Saate selle või selle funktsiooni eraldi lubada või keelata, kui jagate iga lisafunktsiooni eraldi pluginate vahel.

Niisiis, see meetod väärib tõesti tähelepanu.

8 vastust

Võite kasutada vaatleja malli. Lihtne funktsionaalne viis selle saavutamiseks:

Järeldus:

See on minu HULL rakendus 4 + 5 = 9 4 * 5 = 20

Märkused:

Selles lähtekoodi näites peate deklareerima kõik oma pistikprogrammid enne tegelikku lähtekoodi, mida soovite laiendada. Lisasin näite, kuidas käsitleda ühte või mitut pistikprogrammile edastatud väärtust. Selle kõige raskem osa on koostada tegelik dokumentatsioon, mis loetleb, millised argumendid igale konksule edastatakse.

See on vaid üks viis PHP-s pluginasüsteemi loomiseks. On paremaid alternatiive, soovitan teil lisateabe saamiseks tutvuda WordPressi dokumentatsiooniga.

Vabandust, näib, et allkriipsud on asendatud HTML Markdowni objektidega? Kui see viga on parandatud, võin selle koodi uuesti postitada.

Redigeerimine: Pole tähtis, see kuvatakse ainult redigeerimise ajal

Oletame, et te ei vaja Observeri mustrit, kuna see nõuab kuulamisülesandega toimetulemiseks klassimeetodite muutmist ja soovite midagi üldist. Ja oletame, et te ei soovi laiendatud pärimist kasutada, sest võite juba pärida oma klassi mõnest teisest klassist. Kas poleks tore, kui oleks olemas üldine viis mis tahes klassi ühendamiseks ilma suurema vaevata? Tehke järgmist.

_Class = get_class(&$RefObject); $this->_RefObject = $RefObject; ) avalik funktsioon __set($sProperty,$mixed) ( $sPlugin = $this->_Class . "_" . $sProperty . "_setEvent"; if (is_callable($sPlugin)) ( $mixed = call_user_func_array($sPlugin, $ segatud); ) $this->_RefObject->$sProperty = $segatud; ) avalik funktsioon __get($sProperty) ( $asItems = (massiiv) $this->_RefObject; $mixed = $asItems[$sProperty]; $sPlugin = $this->_Class . "_" . $sProperty . "_getEvent"; if (on_callable($sPlugin)) ( $mixed = call_user_func_array($sPlugin, $mixed); ) tagastab $mixed; ) avalik funktsioon __call($ sMethod,$mixed) ( $sPlugin = $this->_Class . "_" . $sMethod . "_beforeEvent"; if (on_callable($sPlugin)) ( $mixed = call_user_func_array($sPlugin, $mixed); ) if ( $mixed != "BLOCK_EVENT") ( call_user_func_array(array(&$this->_RefObject, $sMethod), $mixed); $sPlugin = $this->_Class . "_" . $sMethod . "_afterEvent"; if ( is_callable($sPlugin)) ( call_user_func_array($sPlugin, $mixed); ) ) ) //lõppklass Plugin class Pluggable extends Plugin ( ) //lõppklass Pluggable /////////////// ////// // 2. OSA //////////////////// klass Koer ( avalik $Name = ""; avaliku funktsiooni bark(&$sHow) ( kaja "$sHow
\n"; ) avalik funktsioon sayName() ( echo "
\nMinu nimi on: " . $this->Name ."
\n"; ) ) //klassi lõpp Koer $Koer = new Dog(); ////////////////////////////////// 3. OSA /////// ///////////// $PDog = new Pluggable($Dog); funktsioon Dog_bark_beforeEvent(&$mixed) ( $mixed = "Woof"; // Ütluse "mjäu" tühistamine funktsiooniga "Auu" / /$mixed = "BLOCK_EVENT"; // kui soovite sündmuse blokeerida tagastamise $mixed; ) funktsioon Dog_bark_afterEvent(&$mixed) ( echo $mixed; // näita alistamist ) funktsioon Dog_Name_setEvent(&$mixed) ( $mixed = "Coco"; // alista "Fido" funktsiooniga "Coco" tagastab $mixed; ) funktsiooni Dog_Name_getEvent(&$mixed) ( $mixed = "Different"; // alista "Coco" koos "Different" tagastab $mixed; ) //////////////////// // OSA 4 //////////////////// $PDog-> Nimi = "Fido"; $PDog->Bark("mjäu"); $PDog->SayName(); echo "Minu uus nimi on: " . $PDog->Nimi;

Esimene osa on see, mida saate lubada oma PHP-skripti ülaosas oleva kutsega request_once(). See laadib klasse, et midagi ühendada.

2. osas, kus laadime klassi. Märge. Tunni jaoks ei olnud mul vaja midagi erilist teha, mis erineb oluliselt Observeri mustrist.

3. osas, kus me lülitame oma klassi pistikprogrammile (st toetavad pistikprogrammid, mis võimaldavad meil klassi meetodeid ja omadusi alistada). Näiteks kui teil on veebirakendus, võib teil olla pistikprogrammide register ja saate pluginaid siin aktiveerida. Pange tähele ka funktsiooni Dog_bark_beforeEvent(). Kui määran $mixed = "BLOCK_EVENT" enne return-lauset, blokeerib see koera haukumise ja blokeerib ka Dog_bark_afterEvent, kuna sündmust ei toimu.

4. osas on see tavaline opkood, kuid pidage meeles, et see, mis teie arvates ei tööta, on see, kuidas see töötab. Näiteks koer ei kuuluta oma nime "Fido", vaid kui "Coco". Koer ei ütle "mjäu", vaid "woow". Ja kui soovite hiljem koera nime otsida, näete, et see on "Miscellaneous", mitte "Coco". Kõik need alistamised tutvustati 3. osas.

Kuidas see siis töötab? Noh, välistame eval() (mida kõik ütlevad "kuri") ja välistame, et see pole Observeri mall. Nii et see toimib peidetud tühja klassiga Pluggable, mis ei sisalda Dog-klassi kasutatavaid meetodeid ja atribuute. Seega, kui see juhtub, rakendatakse meie jaoks maagilisi meetodeid. Seetõttu seostume osades 3 ja 4 pigem objektiga, mis on tuletatud klassist Pluggable, mitte aga klassiga Dog. Selle asemel laseme Plugin klassil meie jaoks objekti Koer "puudutada". (Kui see on kujundus, millest ma ei tea, andke mulle teada.)

Kõige sagedamini kasutatakse konksu ja kuulaja meetodit, kuid saate teha ka muid asju. Olenevalt teie rakenduse suurusest ja sellest, kes soovib koodi näha (kas see on FOSS-i skript või midagi kodust), mõjutab oluliselt seda, kuidas soovite pluginaid lubada.

kdeloachil on hea näide, kuid selle juurutamine ja konksu funktsioon on pisut ebaturvalised. Palun teil anda rohkem teavet oma kirja jaoks mõeldud php-rakenduse olemuse ja selle kohta, kuidas näete pistikprogramme.

1 minult kdeloachile.

Siin on meetod, mida ma kasutasin, mis on katse kopeerida Qt signaalide/pilude mehhanismist, omamoodi vaatleja muster. Objektid võivad signaale väljastada. Igal signaalil on süsteemis identifikaator - see koosneb id-st + saateobjektist.Iga signaali saab siduda vastuvõtjatega, mis on lihtsalt "helistatavad". Kasutate siiniklassi signaalide edastamiseks kõigile, kes on huvitatud nende vastuvõtmisest Kui midagi juhtub, saadate signaali. Allpool on näide ja rakendamise näide

Logi sisse(); ?>

Usun, et kõige lihtsam viis on järgida Jeffi nõuandeid ja heita pilk olemasolevale koodile. Proovige vaadata Wordpressi, Drupali, Joomlat ja teisi tuntud PHP CMS-e, et näha, kuidas nende API-d välja näevad ja tunduvad. Nii võite isegi saada ideid, millele te võib-olla varem ei mõelnud, et asju pisut paksemaks muuta.

Otsesem vastus oleks kirjutada üldised failid, mis lisatakse kasutusmugavuse tagamiseks kaasamisfaili. See liigitatakse ja EI esitata ühes massilises failis "hooks.php". Olge ettevaatlik, sest lõpuks juhtub see, et nendes sisalduvatel failidel on üha rohkem sõltuvusi ja funktsioone. Proovige piirata API sõltuvust. I.E-l on nende kaasamiseks vähem faile.

7. mai versioon PHP ilmus hiljuti 2015. Uus ring selle programmeerimiskeele arenduses on toonud palju võimalusi kõigile, kes seda kasutavad PHP. Uue versiooni eeliste hulgas tuleks esile tõsta kiirust. Seega on arendajate sõnul skriptide kiirus PHP 7, võrreldes eelmiste versioonidega, on peaaegu kahekordistunud. Sellega seoses on paljud nende saitide omanikud, millel on installitud vanemad versioonid PHP, soovite uue vastu lülituda.

Miks kontrollida ühilduvust?

Tuleb märkida, et enne versiooni muutmist oma hostimise juhtpaneelil PHP uuemale ja kiiremale, peate kontrollima WordPressi saidi ühilduvust sellega, nimelt teemasid ja pistikprogramme. See vajadus tekib seetõttu, et tavaliselt lisatakse tarkvara uutesse versioonidesse mõned funktsioonid ja mõni lakkab üldse olemast. Kui pistikprogramm või teema kasutab funktsioone või meetodeid, mida uues versioonis ei eksisteeri, on see märk veast, mis võib häirida saidi kui terviku tööd.

Kuidas kontrollida ühilduvust PHP 7.0-ga?

PHP ühilduvuse kontrollimise pistikprogramm

PHP Compatibility Checkeri pistikprogramm võimaldab teil skannida kogu saiti ja näidata, millised selle komponendid (teemad, pluginad) ei ühildu valitud versiooniga PHP. Kõigepealt peate selle installima ja aktiveerima, seejärel minge administraatoripaneelile Tööriistad -> PHP ühilduvus.

Nagu näete, pakub pistikprogramm väga selgeid sätteid. Kontrollimise alustamiseks peate valima versiooni PHP, ühilduvuse osas, millega soovite saiti kontrollida (blokeeri PHP versioon). Pistikprogrammi mugav funktsioon on kontrollida kontrollitavate komponentide olekut. Valida on kahe valiku vahel: kas valida aktiivsete teemade ja pistikprogrammide vahel või mitteaktiivsete teemade ja pistikprogrammide vahel (väli Plugina/teema olek). Kontrollimise alustamiseks peate vajutama nuppu Kontrolli saiti uuesti.

Katsetulemuse saab alla laadida ka tekstifailina, vajutades nuppu Laadige aruanne alla.

Tere, kallid sõbrad ja blogikülalised! Tänane postitus on kasulik nii algajatele kui ka kogenud veebimeistritele, kes veel ei tea, kuidas sisestada lehtedele, postitustele ja külgribadele PHP-koodi Wordpressi, et seda saaks käivitada WordPressi mootor.

Ma tahan teile selles artiklis rääkida sellest ja sellest, kuidas saate sisestada php-koodi Wordpressi ilma pistikprogrammi ja pistikprogrammi kasutamata. Samuti saate teada kõik nüansid ja peensused, plussid ja miinused, mis võivad teid WordPressis selle funktsiooni täitmisel ees oodata.

Mõnikord on veebisaidi loomisel lihtne vajadus sisestada postitustesse, lehtedesse või külgribadesse PHP-kood. Kohtasin seda ise korra ja kui proovisin php-koodi lihtsalt külgribale kleepida, kuvati see lihttekstina. See tähendab, et seda ei teostatud funktsioonina.

Miks peate WordPressis postitustes, lehtedel ja külgribadel PHP-koodi käivitama? Iga veebimeister otsustab ise! Näiteks oli vajadus sisestada oma postitustesse PHP-koodis loodud skript või külgribal on vaja kuvada ebatavaline menüü, seda ei tea kunagi.

Nii et WordPressis käivitatava php-koodi kuvamiseks peate tegema mõned toimingud ja nüüd saame teada, millised ...

Kuidas kuvada WordPressis käivitatavat PHP-koodi ilma pistikprogrammita?

See PHP-koodi WordPressi väljastamise meetod on asjakohane neile, kes on oma ressurssidele mittevajalike pistikprogrammide installimise tulihingelised vastased. Ja nüüd saate teada, kuidas seda teha.

Selleks peate failis tegema mõned muudatused funktsioonid.php teie aktiivne veebisaidi teema. Lihtsalt lisage see kood päris lõppu enne " ?> " :

/* WordPressi artiklitesse/lehtedesse käivitatava php-koodi sisestamiseks kasutage järgmist lühikoodi: code */ function exec_php($matches)( eval("ob_start();".$matches."$inline_execute_output = ob_get_contents();ob_end_clean()) ;"); return $inline_execute_output; ) funktsioon inline_php($content)( $content = preg_replace_callback("/\((.|\n)*?)\[\/exec\]/", "exec_php", $content ); $content = preg_replace("/\((.|\n)*?)\[\/exec\]/", "$1", $sisu; tagasta $sisu; ) add_filter("sisu", " inline_php", 0);

Seejärel kasutage käivitatava php-koodi sisestamiseks oma postitustes ja artiklites seda lühikoodi:

Siin on php kood

  • Väike täpsustus, mis on väga oluline punkt php koodi õigeks kuvamiseks ja väljastamiseks saidi postitustes!

Veenduge, et kui manustate oma PHP-koodi lühikoodi, ärge kasutage järgmist: ""! See tähendab, et teie lühikoodi sisestatud käivitatav php-kood peaks välja nägema mitte niimoodi " " , A nagu nii "kajakuupäev ("Y"); Ja lõpuks, kui kleepite selle lühikoodi, näeb see välja järgmine:

Kaja kuupäev ("Y");

  • Veel üks hoiatus algajatele veebimeistritele!

PHP-koodi täitmine oma WordPressi postitustes sel viisil muudab teie mootori haavatavaks igasuguste häkkerite ees – kräkkerite ees, kes saavad seda kasutada oma isekatel eesmärkidel. Selleks peate muutma väärtust " täitja" faili sisestatud koodis funktsioonid.php omadele, mis on teada ainult teile! Ja vastavalt sellele kasutage sama väärtust lühikoodid postitustesse sisestamiseks.

Selle toiminguga saate vältida tõsiasja, et keegi saaks ära kasutada selle funktsiooni kasutamise tulemusena tekkivat võimalikku "auku" - sisestage PHP kood Wordpressi.

See kõik puudutab php-koodi sisestamist WordPressi ilma pistikprogrammi kasutamata.

Nüüd uurime, kuidas saab WordPressi sisestada ka php-koodi, kuid kasutades pluginat...

Kuidas manustada WordPressi käivitatavat PHP-koodi Exec-PHP pistikprogrammiga?

PHP-koodi täitmiseks WordPressi sisestamiseks on palju pistikprogramme. Kuid mitte kõik neist pole ohutud, kuna nende paigaldamisel ja kasutamisel ilmnevad mootorisse haavatavused, mida hoolimatute häkkerite abil saavad ära kasutada.

Nüüd räägin teile kõige turvalisemast ja funktsionaalsemast pistikprogrammist php-koodi käivitamiseks WordPressis – see on Exec-PHP. Kõigepealt peate selle alla laadima või saidilt ametlik WordPressi veebisait või installige lihtsalt oma saidi administraatoripaneelilt. Loodan, et tead, kuidas seda teha?! Kui sa ei tea, siis vaata. Seal on ka videoklipp, milles saab kõike oma silmaga näha. Kuigi me räägime erineva pistikprogrammi installimisest, on põhimõte sama.

Pärast pistikprogrammi installimist ja aktiveerimist kuvatakse teie peamenüüs järgmine teave:

Klõpsake sellel ja teid suunatakse:

Valige siit, et vidinates PHP-koodi käivitada/ignoreerida ja ongi kõik.

Seejärel, et saaksite WordPressi postitustesse ja lehtedesse sisestada käivitatava PHP-koodi, peate oma profiilis märkima ruudu - :

Kõik. Nüüd saate WordPressis oma lehtedele ja postitustele lisada mis tahes PHP-koodi ning see käivitatakse!

Täname tähelepanu eest! Edu kõigile! Kohtumiseni jälle!

Kõik WordPressiga tuttavad on kuulnud teema (malli) funktsioonidest.php failist. Kuid mitte kõik ei mõista selle eesmärki hästi, nähes seda ainult failina, mis salvestab erinevaid PHP funktsioone. Internetis, nagu ka minu saidil, soovitatakse sageli lisada sellele failile PHP-kood. Kuid mitte iga kood ei tööta selle faili puhul. Mitte sellepärast, et see ei töötaks, vaid sellepärast, et see ei sobiks kasutusloogikaga.

Samuti teevad algajad funktsioonid.php redigeerimisel vigu, mille tõttu sait lakkab töötamast.

Selles artiklis püüan kaaluda kõiki neid punkte: millal funktsioonis.php kasutada ja millal on parem seda mitte teha, millised vead võivad funktsioonide.php redigeerimisel tekkida.

Funktsioonid funktsioonid.php

Funktsioonid.php asub teemakaustas ja laaditakse iga kord, kui vaatate saidi välist osa, administraatori paneelil ja isegi AJAX-i päringute ajal. Pole juhust, kui functions.php-d ei kaasata ja see avab arendajatele laialdased võimalused.

Näiteks järgmine kood, mis on sisestatud teema faili functions.php, laiendab teema võimalusi, lubades postituste pisipiltide toe:

Add_action("after_setup_theme", "wp_kama_theme_setup"); function wp_kama_theme_setup())( // Pisipiltide tugi add_theme_support("post-thumbnails"); )

Veel üks näide, kood asendab WordPressi administraatori paneeli jaluses oleva teksti andmetega andmebaasipäringute arvu, lehe genereerimise aja ja mälukasutuse kohta:

## Andmed andmebaasi päringute arvu kohta administraatori paneelis add_filter("admin_footer_text", "wp_usage"); // administraatori paneelil add_filter("wp_footer", "wp_usage"); // veebisaidil funktsioon 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));)

Funktsioonid.php vs pluginad

- "Pluginad töötavad aeglasemalt kui kood failis functions.php," ütlevad asjatundmatud - see pole tõsi!

Teoreetiliselt on koodi sisestamine faili functions.php sama, mis plugina installimine, kuid see pole sama asi. Teema muutmisel saame ju hoopis teistsuguse funktsioonid.php ja kõik tehtud muudatused lähevad kaotsi, aga plugin jääb alles, olenemata sellest, kui palju teemat muudetakse. Nendel põhjustel peame viitama failile functions.php. Kui lisatud funktsionaalsus ei puuduta ainult teemat, vaid ka saiti tervikuna, siis peaksite mõtlema selle ühendamisele pistikprogrammina.

Teine ülaltoodud näide on "Andmed andmebaasi päringute arvu kohta administraatori paneeli jaluses". Loogiliselt ei sobi see funktsioonis.php failis kasutamiseks. Sest malli muutmisel kaotame selle funktsiooni, kuid seda kasutatakse administraatori paneelis ja seda on vaja olenemata sellest, mis teemat kasutatakse.

Nii et eemaldame selle failist functions.php ja teeme sellest pistikprogrammi – see on lihtne!

Plugina loomiseks tuleb luua alloleva koodiga fail (faili nimi võib olla ükskõik milline), lisada see pluginate kataloogi wp-content/plugins/ ja aktiveerida plugin administraatori paneelil:

Kui te ei soovi administraatoripaneelil mõnda teist pistikprogrammi näha, võite kasutada must-kasutatavaid pistikprogramme.

Mida funktsioonid.php tegelikult teeb?

Nagu eespool kirjutasin: funktsioonid.php on vajalik teema funktsionaalsuse laiendamiseks ja ainult selleks! Sellesse faili peate lisama mis tahes koodi, mis on vajalik malli enda jaoks, kuid mitte saidi kui terviku jaoks.

Kui mõne ressursi puhul palutakse teil lisada kood faili functions.php ja koodi funktsioon ei ole malliga otseselt seotud, siis ärge olge laisk sellest koodist pluginat tegema ja võib-olla teete seda tulevikus. vältida varem lisatud funktsioonide ootamatut kadumist.

Kuidas funktsioonid.php laaditakse

Funktsioonid.php kaasatakse praeguse teema lähtestamise ajal, kui kõik WordPressi funktsioonid ja kõik aktiivsed pistikprogrammid on lubatud. Kirjeldan lühidalt WordPressi laadimise kronoloogiat, kus näete, millal olulised failid on ühendatud:

Index.php wp-blog-header.php wp-load.php wp-config.php wp-settings.php // Kõige elementaarsemad funktsioonid on ühendatud (ühendus $wpdb andmebaasi ja filtrisüsteemiga) // Põhifiltrid on ühendatud // SHORTINIT: laadimise peatamine, kus on ainult kõige elementaarsem: if (SHORTINIT) return false; // on ühendatud kogu WordPressi keskkond: põhifunktsioonid, filtrid // ühendatakse kohustuslikud pluginad, seejärel käivitatakse sündmus: do_action("muplugins_loaded"); // aktiveeritud pluginad ühendatakse, siis käivitatakse sündmus: do_action("plugins_loaded"); // globaalsed muutujad on määratud: wp_the_query, wp_query, wp_rewrite, wp, wp_widget_factory, wp_roles ... do_action("setup_theme"); // installib praeguse teema // ühendab teemafaili >>>>>>>>>>>>> functions.php<<<<<<<<<<<< do_action("after_setup_theme"); // событие, когда среда WP, все плагины и тема полностью подключены, но на экран еще ничего не выведено: do_action("init"); // проверка статуса сайта для мультисайтовой сборки // тоже самое что init только после проверки статуса (до этой строки работа PHP может не дойти) do_action("wp_loaded"); wp() // заполняет основной запрос WP и все глобальные переменные связанные с ним wp-includes/template-loader.php // подключает нужный файл шаблона

WordPressi ja eriti funktsioonide.php laadimisprotsess on hästi illustreeritud sellel joonisel:

WordPressi laadimisskeem

Vead funktsioonides.php koodi kleepimisel

Olen korduvalt kokku puutunud küsimustega vigade kohta, näiteks: "Pärast koodi installimist faili functions.php sait lakkas töötamast - valge ekraan. Mida ma peaksin tegema?" Olen ise kunagi millegi sarnasega kokku puutunud.

Minu jaoks jäid selle probleemi mõned lahendused pikka aega saladuseks - tundus, et ma ei teinud midagi ja isegi ei tantsitud parmupilliga, kuid ükskord see kõik töötas. Miks see juhtub? Vaatame võimalikke olukordi, mille tõttu sait võib "katki minna" ja nende selgitusi:

    Sisestate valmis koodi - sait lakkab töötamast.

  1. Muudate functions.php - sait lakkab töötamast.

Enamasti on see PHP-i siltide avamise ja sulgemise küsimus. Tavaliselt, kui sisestatava koodi alguses ja lõpus on need sildid, tuleb need eemaldada. Samuti ei tohiks faili functions.php ekraanil kuvada teksti (HTML-koodi ega muud sisu). Tekstiväljastus on lubatud ainult funktsioonide sees, mida hiljem mallis kasutatakse või mis on kinnitatud konksudesse (vt täpsemalt allpool).

Varem pole tähemärke lubatud, sealhulgas nähtamatud märgid (reavahetus), sest funktsioonid.php ühendatakse enne http-päiste seadmist (sellised päised edastavad erinevaid andmeid, näiteks, et tegemist on html dokumendiga; et utf-8 kodeering on erinev). PHP reeglite järgi peaks sisu pärast päiste saatmist ekraanile kuvama. Ja kõike, mis on väljassee on sisu – ekraanil kuvatav tekst, isegi nähtamatu \n märk. Seetõttu põhjustab see tekst vea.

Vigade vältimiseks kaaluge 4 punkti:

# 1 Õige pesitsemine

Näiteks oli meil selline struktuur:

.......siin on kood......... ?>

Õigesti nii:

#2 Enne reavahetusi, tühikuid ja teksti pole

See kood põhjustab tõrke:

Kuid see ei tee seda:

Loogilisem on kirjutada nii:

Juhtub, et funktsioonis.php päris lõppu asetatakse reavahetus ja siis muutub see tõeliseks probleemiks, sest kõik näib olevat õige, kuid sait ei tööta. Tegelikult pärast?> või enne

siin on tühi rida

Seetõttu eemaldavad paljud arendajad sulgeva märgendi ?> täielikult; see on PHP-s vastuvõetav. Soovitan alati seda teha:

# 3 KasutagePHP funktsioonide sees

Kui failis functions.php on funktsioon, saab selle funktsiooni sees kasutada silte, et näiteks funktsiooni sees HTML-koodi visuaalselt esile tõsta:

see on html kood

Fakt on see, et sel juhul on funktsioon ainult registreeritud ja ei tee mingeid toiminguid. Kõik funktsiooni sees (vahemikus ( )) ei tööta enne, kui see funktsioon on välja kutsutud, ja selliseid funktsioone kutsutakse tavaliselt mallist või filtrite kaudu pärast HTTP-päiste saatmist. Nii et selles näites võime reavahetusi ignoreerida ja kasutada ?> ja

# 4 Kodeerimine

Veel üks märkus faili functions.php kohta: määrake faili kodeeringuks UTF-8 (UTF-8 ilma BOM-ita). Vastasel juhul, kui funktsioonifail sisaldab kirillitsas teksti, kuvatakse see arusaamatute tähtedega: jaburus, kritseldus – nimetage seda, kuidas soovite.