Varmasti olet useammin kuin kerran kohdannut tarpeen lisätä WordPress-sivustollesi koodinpätkä uusien toimintojen lisäämiseksi. En puhu Google Analytics -skripteistä, jotka lisäät teemasi otsikkoosaan. Ei. Puhun niistä pienistä koodinpätkistä, jotka löysit Internetin foorumeilta ja juoksit heti lisäämään ne tiedostoosi. Functions.php.

Olkaamme rehellisiä, olet tehnyt tämän ainakin kerran, eikö niin? Ja tämä on ymmärrettävää, koska se kirjoitettiin foorumilla - lisää tämä koodi WordPress-teemasi functions.php-tiedostoon.

Totuus on, että jokaisen Internetistä löytämäsi koodin lisääminen functions.php:hen on ei aina hyvä idea. Turvallisempi ratkaisu olisi luoda oma mukautettu minilaajennus tällä koodilla.

Tässä opetusohjelmassa kerromme sinulle, missä tapauksissa voit lisätä koodia functions.php:hen ja missä tapauksissa on parempi käyttää erillistä laajennusta. Näytämme myös, kuinka voit luoda mukautetun laajennuksen itse ja lisätä siihen oman koodisi.

Mikä on functions.php

Jos olet joskus käynyt läpi WordPress-sivustosi tiedostot, olet ehkä törmännyt useisiin functions.php-tiedostoihin. Functions.php-tiedosto, josta puhumme tässä opetusohjelmassa, sijaitsee kansiossa: wp-contentthemesyourthemefunctions.php.

Ilmeisesti tämä on sama tiedosto, joka tallentaa kaikki tietyn teemasi toiminnot ja asetukset, tällä hetkellä aktiivinen. Kiinnitä huomiota sanaan "aktiivinen", koska tämä on tämän oppitunnin pääviesti.

Miksi aina functions.php:n käyttäminen on huono idea

Älä ymmärrä minua väärin, functions.php:n käyttäminen pienille koodinpätkille parin rivin sisällä on täysin normaali tilanne. Sanomme, että ei ole hyvä idea käyttää functions.php:tä täysin kaiken lisäämäsi koodin arkistona. Tämä ei ole yksikokoinen ratkaisu jokaiseen tilanteeseen.

Syy #1.

Jos teemaasi päivitetään, menetät kaiken, mitä kirjoitit functions.php-tiedostoon. Tiedän, mitä juuri ajattelit - mutta onko olemassa yksi vain tällaisia ​​tilanteita varten?

Tietysti on. Mutta on myös monia ihmisiä, joilla ei ole aavistustakaan, mikä lapsiteema on. Tai jotkut ihmiset ovat pyytäneet sinua lisäämään koodinpätkän teemaansa.

Siksi tämä syy on tässä luettelossa. Jos lisäät koodia functions.php-tiedostoon käyttämättä alatason teemaa, tämä on ensimmäinen punainen lippusi.

Syy #2.

Vaikka olet määrittänyt lapsiteeman ja käytät sitä oikein. Mitä tapahtuu, jos haluat vaihtaa toiseen teemaan? Toivon, että lisäät kommentin jokaiseen muutokseen, jonka teet functions.php-tiedostossasi, koska ilman sitä vaihtaminen toiseen teemaan on erittäin tuskallista. Luulen, että ymmärrät idean.

Syy #3.

Jos olet lisännyt Functions.php-tiedostoon koodin, joka yllättäen rikkoo sivustosi kokonaan ja sinulle jää tyhjä valkoinen näyttö, tarvitset FTP-asiakkaan ladataksesi rikkinäisen functions.php:n, muokataksesi sitä, ja lataa se takaisin sivustollesi. Ilo on sellaista.

Milloin functions.php:tä käytetään

Functions.php:n oikea käyttäminen tällä hetkellä aktiivisena alateemana on kelvollinen vaihtoehto. Mutta muista, korostin tätä sanaa " aktiivinen"?

Jos lisäät koodinpätkiä, joilla on järkeä vain, kun työskentelet kyseisen teeman kanssa, voit turvallisesti käyttää functions.php:tä (alateemassa). Tässä on joitain esimerkkejä, joissa tämä olisi sopivaa:

  • Lisää toinen tyylitiedosto (.css) teemallesi
  • Viestiotteen pituuden muuttaminen sivuston näyttämiseksi paremmalta
  • Mukautettujen kirjasimien lisääminen nykyiseen teemaan
  • Lokalisointitiedoston lisääminen nykyisen teeman kääntämiseksi

Toisin sanoen, aina kun lisäät tai muutat jotain tiettyyn nykyiseen teemaan liittyvää, voit turvallisesti käyttää functions.php:tä.

Milloin on parempi tehdä ilman functions.php

Functions.php:n käyttäminen globaalien asioiden ja funktioiden lisäämiseen, joita saatat teoriassa tarvita toiselle teemalle, on huono idea.

Tässä on pari esimerkkiä, milloin on parempi tehdä ilman functions.php:tä:

  • Luo mukautettuja widgetejä, joita käytät usein
  • Mukautettujen lyhytkoodien luominen
  • Teemasta riippumattoman koodin lisääminen (Google Analytics -koodi jne.)

Tällaisissa tapauksissa on parempi tallentaa tämä koodi teemastasi riippumatta. Ja voit tehdä tämän mukautetuilla laajennuksilla.

Ajatteletko nyt ihmetteleväsi laajennuksen luomista, kun voit muokata functions.php:tä? Se on liian vaikeaa! Usko minua, tämä ei ole totta. Tämä tehdään erittäin helposti ja nopeasti.

Mukautetun laajennuksen määrittäminen functions.php:n sijaan

Luodaksesi oman mukautetun laajennuksen koodin tallentamista varten tarvitset:

  1. Luo tekstitiedosto koodillasi ja tallenna se .php-tiedostona
  2. Pakkaa tuloksena oleva .php-tiedosto .zip-arkistoon
  3. Asenna tämä arkisto tavalliseksi WordPress-laajennukseksi valikkoon Plugins → Lisää uusi

Siinä kaikki, vain 3 askelta.

Vaihe 1. Luo .php-tiedosto koodillasi

Avaa Notepad tietokoneellasi ja liitä seuraava teksti:

Voit tietysti käyttää omaa nimeäsi laajennukselle Plugin Name -rivillä:

Tallenna tiedosto ja anna sille yksilöllinen nimi, jotta WordPress ei sekoita laajennuksiasi jo asennettuihin. Esimerkiksi: wpcafe-custom-functions.php.

Kyllä, älä unohda valita "Kaikki tiedostot" -tiedostotyyppiä tallennettaessa ja lisätä .php-tunniste:

Vaihe 2. Luo .zip-arkisto

Mielestäni tässä ei tarvita selityksiä. Luo vain .zip-arkisto tiedostostasi millä tahansa kätevällä arkistointilaitteella.

Vaihe 3. Asenna tavallisena laajennuksena

Yksinkertaisin osa. Mene vain WordPress-järjestelmänvalvojaasi osoitteessa Plugins → Lisää uusi ja lataa arkistosi tavallisena laajennuksena.

Kun olet aktivoinut sen, näet uuden laajennuksen kaikkien muiden asennettujen laajennusten luettelossa:

Kuinka lisätä oma koodi

Lisää oma koodinpätkä liittämällä se luomaasi .php-tiedostoon. Tai voit aina tehdä toisen erillisen laajennuksen kahdelle eri toiminnolle.

Esimerkiksi .php-tiedostosi näyttäisi tältä, jos haluat tehdä "Hello World!"-lyhytkoodin:

Nämä kommentit eivät millään tavalla vaikuta koodisi suorituskykyyn tai laajennuksen suoritusnopeuteen. Mutta niiden avulla sinun on helpompi navigoida ja muistaa, mitä kukin lisäämäsi ominaisuus tekee.

Kääri kommenttisi vinoviiva- ja tähtimerkkiin: /* Kommenttisi */

Kun olet tehnyt muutoksia koodiisi, voit ladata .php-tiedoston uudelleen FTP:n kautta tai yksinkertaisesti luoda uuden .zip-arkiston ja ladata sen uutena liitännäisenä ja poistaa vanhan.

Muita tapoja välttää functions.php:n muokkaaminen

Yleisesti ottaen, jos olet tarpeeksi varma kyvyistäsi ja osaat lisätä koodia functions.php:hen, sinulla ei pitäisi olla vaikeuksia mukautettujen laajennusten kanssa. Tässä ei ole mitään monimutkaista.

Mutta ymmärrämme erittäin hyvin, jos et halua käsitellä kaikkea tätä manuaalisesti. Loppujen lopuksi tämä on WordPress. Siksi saatat olla hyödyllistä käyttää ilmaista Code Snippets -laajennusta, jonka avulla voit helposti lisätä lisäkoodisi sivustolle:

Tämän laajennuksen avulla voit lisätä erilaisia ​​koodinpätkiä, antaa niille otsikon, kuvauksen ja valikoivasti aktivoida ja poistaa käytöstä yhden tai toisen koodin.

Toinen hieno ominaisuus on, että voit tuoda/viedä koodinpätkiäsi sivustojen välillä.

Tulokset

Tämä saattaa tuntua pieneltä yksityiskohdalta, mutta lisäämällä lisäkoodin oikein voit vaihtaa muiden teemojen välillä ilman ongelmia tulevaisuudessa. Voit myös ottaa käyttöön tai poistaa käytöstä tämän tai toisen toiminnon yksitellen, jos jaat jokaisen lisätoiminnon eri lisäosien kesken.

Joten tämä menetelmä todella ansaitsee huomiota.

8 vastausta

Voit käyttää Observer-mallia. Yksinkertainen toiminnallinen tapa saavuttaa tämä:

Johtopäätös:

Tämä on CAZY-sovellukseni 4 + 5 = 9 4 * 5 = 20

Huomautuksia:

Tässä esimerkkilähdekoodissa sinun on ilmoitettava kaikki laajennukset ennen varsinaista lähdekoodia, jota haluat laajentaa. Olen lisännyt esimerkin yhden tai useamman laajennukseen välitetyn arvon käsittelemisestä. Vaikein osa tässä on kirjoittaa varsinainen dokumentaatio, jossa luetellaan, mitkä argumentit kullekin koukkuun välitetään.

Tämä on vain yksi tapa luoda laajennusjärjestelmä PHP:ssä. On olemassa parempia vaihtoehtoja, suosittelen tutustumaan WordPress-dokumentaatioon saadaksesi lisätietoja.

Anteeksi, näyttää siltä, ​​että alaviivat korvataan HTML Markdown -objekteilla? Voin julkaista tämän koodin uudelleen, kun tämä virhe on korjattu.

Edit: Ei haittaa, se näkyy vain, kun muokkaat

Oletetaan siis, että et tarvitse Observer-mallia, koska se edellyttää luokkamenetelmien vaihtamista kuuntelutehtävän hoitamiseksi ja haluat jotain yleistä. Ja oletetaan, että et halua käyttää Extended-perintöä, koska saatat jo periä luokkasi joltakin toiselta luokalta. Eikö olisi hienoa, että meillä olisi yleinen tapa saada mikä tahansa luokka kytkettäväksi ilman suuria vaivaa? Näin:

_Class = get_class(&$RefObject); $this->_RefObject = $RefObject; ) julkinen funktio __set($sProperty,$mixed) ( $sPlugin = $this->_Class . "_" . $sProperty . "_setEvent"; if (on_callable($sPlugin)) ( $mixed = call_user_func_array($sPlugin, $ sekoitettu); ) $this->_RefObject->$sProperty = $mixed; ) julkinen funktio __get($sProperty) ( $asItems = (array) $this->_RefObject; $mixed = $asItems[$sProperty]; $sPlugin = $this->_Class . "_" . $sProperty . "_getEvent"; if (on_callable($sPlugin)) ( $mixed = call_user_func_array($sPlugin, $mixed); ) palauttaa $mixed; ) julkinen funktio __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) ////// // OSA 2 //////////////////// luokan koira ( julkinen $Name = ""; julkinen toiminto bark(&$sHow) ( echo "$sHow
\n"; ) julkinen funktio sayName() ( echo "
\nNimeni on: " . $this->Name ."
\n"; ) ) //loppuluokka Koira $Koira = uusi Koira(); ///////////////////////OSA 3 /////// ///////////// $PDog = new Pluggable($Dog); funktio Dog_bark_beforeEvent(&$mixed) ( $mixed = "Woof"; // Ohita sanonta "miau" komennolla "Woof" / /$mixed = "BLOCK_EVENT"; // jos haluat estää tapahtuman palautuksen $mixed; ) toiminto Dog_bark_afterEvent(&$mixed) ( echo $mixed; // näytä ohitus ) Funktio Dog_Name_setEvent(&$mixed) ( $mixed = "Coco"; // ohita "Fido" komennolla "Coco" palauttaa $mixed; ) funktio Dog_Name_getEvent(&$mixed) ( $mixed = "Different"; // ohita "Coco" "Different" palauttaa $mixed; ) //////////////////// // OSA 4 //////////////////// $PDog-> Nimi = "Fido"; $PDog-> Bark("miau"); $PDog->SayName(); echo "Uusi nimeni on: " . $PDog->Nimi;

Ensimmäinen osa on se, jonka voit ottaa käyttöön vaatimalla request_once()-kutsua PHP-skriptin yläosassa. Se lataa luokat tehdäkseen jostakin kytkettävän.

Osassa 2, jossa lataamme luokan. Huomautus. Minun ei tarvinnut tehdä mitään erityistä luokalle, joka eroaa merkittävästi Observer-kuviosta.

Osassa 3, jossa vaihdamme luokkamme "plug-iniksi" (eli tukilaajennuksiin, joiden avulla voimme ohittaa luokan menetelmiä ja ominaisuuksia). Joten jos sinulla on esimerkiksi verkkosovellus, sinulla voi olla laajennusrekisteri ja voit aktivoida laajennuksia täällä. Huomaa myös Dog_bark_beforeEvent()-funktio. Jos asetan $mixed = "BLOCK_EVENT" ennen return-lausetta, se estää koiraa haukkumasta ja estää myös Dog_bark_afterEvent, koska tapahtumaa ei ole.

Osassa 4 se on normaali käyttökoodi, mutta huomaa, että se ei ehkä toimi, miten se toimii. Esimerkiksi koira ei ilmoita nimeään nimellä "Fido", vaan "Coco". Koira ei sano "miau" vaan "vau". Ja kun haluat etsiä koiran nimen myöhemmin, huomaat, että se on "Sekalaista" eikä "Coco". Kaikki nämä ohitukset esiteltiin osassa 3.

Joten miten se toimii? No, suljetaan pois eval() (jonka kaikki sanovat olevan "paha") ja suljetaan pois, ettei tämä ole Observer-malli. Joten tapa tämä toimii piilotetulla tyhjällä Pluggable-luokalla, joka ei sisällä Dog-luokan käyttämiä menetelmiä ja ominaisuuksia. Näin ollen, kun tämä tapahtuu, maagisia menetelmiä käytetään meille. Siksi osissa 3 ja 4 sitoudumme Pluggable-luokasta johdettuun objektiin eikä itse Koira-luokkaan. Sen sijaan annoimme Plugin-luokan "koskettaa" Dog-objektia puolestamme. (Jos tämä on jokin malli, josta en tiedä - kerro minulle.)

Koukku ja kuuntelija -menetelmä on yleisimmin käytetty, mutta voit tehdä muitakin asioita. Riippuen sovelluksesi koosta ja siitä, kuka haluaa nähdä koodin (onko se FOSS-skripti vai jotain talon sisällä), vaikuttaa suuresti siihen, miten haluat sallia laajennukset.

kdeloachilla on hyvä esimerkki, mutta sen toteutus ja koukkutoiminto ovat hieman vaarallisia. Pyydän sinua antamaan lisätietoja kirjeesi php-sovelluksen luonteesta ja siitä, miten näet laajennukset.

1 kdeloachille minulta.

Tässä on käyttämäni lähestymistapa, joka on yritys kopioida Qt:n signaalit/slots-mekanismista, eräänlainen Observer-kuvio. Esineet voivat lähettää signaaleja. Jokaisella signaalilla on järjestelmässä tunniste - se koostuu id:stä + lähettävästä objektista. Jokainen signaali voidaan sitoa vastaanottimiin, jotka ovat yksinkertaisesti "soitavia". Käytät väyläluokkaa välittämään signaalit kaikille, jotka ovat kiinnostuneita vastaanottamaan niitä. Kun jotain tapahtuu, lähetät signaalin. Alla on esimerkki ja toteutusesimerkki

Kirjaudu sisään(); ?>

Uskon, että helpoin tapa on seurata Jeffin neuvoja ja katsoa olemassa olevaa koodia. Kokeile Wordpressiä, Drupalia, Joomlaa ja muita tunnettuja PHP-sisällönhallintajärjestelmiä nähdäksesi, miltä niiden API näyttävät ja tuntuvat. Tällä tavalla saatat jopa saada ideoita, joita et ehkä ole aiemmin ajatellut tehdä asioista hieman paksumpia.

Suorempi vastaus olisi kirjoittaa yleisiä tiedostoja, jotka he sisällyttäisivät sisällytystiedostoon käytön helppouden varmistamiseksi. Tämä luokitellaan ja EI toimiteta yhdessä "hooks.php" MASSIVE-tiedostossa. Ole varovainen, sillä loppujen lopuksi niiden sisältämät tiedostot sisältävät yhä enemmän riippuvuuksia ja toimintoja. Yritä rajoittaa API-riippuvuutta. I.E:ssä on vähemmän tiedostoja sisällytettäväksi.

7. toukokuuta versio PHP julkaistiin viime vuonna 2015. Uusi kierros tämän ohjelmointikielen kehittämisessä on tuonut monia mahdollisuuksia kaikille käyttäjille PHP. Uuden version eduista on korostettava nopeutta. Joten kehittäjien mukaan skriptien nopeus on PHP 7, verrattuna aikaisempiin versioihin, on lähes kaksinkertaistunut. Tässä suhteessa monet sivustojen omistajat, joilla on vanhemmat versiot asennettuna PHP, haluat vaihtaa uuteen.

Miksi tarkistaa yhteensopivuus?

On huomattava, että ennen version vaihtamista isännöinnin ohjauspaneelissa PHP uudempaan ja nopeampaan, sinun on tarkistettava WordPress-sivustolta yhteensopivuus sen kanssa, eli teemat ja lisäosat. Tämä tarve syntyy, koska yleensä uusissa ohjelmistoversioissa joitain toimintoja lisätään ja jotkut lakkaavat olemasta kokonaan. Jos laajennus tai teema käyttää toimintoja tai menetelmiä, joita ei ole uudessa versiossa, tämä on merkki virheestä, joka voi häiritä koko sivuston toimintaa.

Kuinka tarkistaa yhteensopivuus PHP 7.0:n kanssa?

PHP-yhteensopivuuden tarkistuslaajennus

PHP Compatibility Checker -laajennuksen avulla voit tarkistaa koko sivuston ja osoittaa, mitkä sen komponentit (teemat, laajennukset) eivät ole yhteensopivia valitun version kanssa PHP. Ensin sinun on asennettava ja aktivoitava se ja siirry sitten hallintapaneeliin Työkalut -> PHP-yhteensopivuus.

Kuten näet, laajennus tarjoaa erittäin selkeät asetukset. Tarkistamisen aloittamiseksi sinun on valittava versio PHP, yhteensopivuuden varalta, jonka kanssa haluat tarkistaa sivuston (block PHP versio). Lisäosan kätevä toiminto on valita tarkistettavien komponenttien tila. Valittavana on kaksi vaihtoehtoa: joko valitse aktiivisten teemojen ja lisäosien joukosta tai ei-aktiivisista (kenttä Plugin/Teeman tila). Aloita tarkistaminen painamalla -painiketta Skannaa sivusto uudelleen.

Testituloksen voi ladata myös tekstitiedostona napsauttamalla painiketta Lataa raportti.

Hei rakkaat ystävät ja blogivieraat! Tämän päivän postaus on hyödyllinen sekä aloittelijoille että kokeneille verkkovastaaville, jotka eivät vielä osaa lisätä PHP-koodia Wordpressiin sivuille, viesteihin ja sivupalkkeihin, jotta se voidaan suorittaa WordPress-moottorilla.

Haluan kertoa sinulle tässä artikkelissa tästä ja kuinka voit lisätä php-koodia Wordpressiin ilman lisäosaa ja laajennusta. Opit myös kaikki vivahteet ja hienovaraisuudet, edut ja haitat, jotka saattavat odottaa sinua suorittaessasi tätä toimintoa WordPressissä.

Joskus verkkosivustoa luotaessa on yksinkertainen tarve lisätä PHP-koodi WordPressiin viesteissä, sivuissa tai sivupalkeissa. Törmäsin tähän itse kerran ja kun yritin yksinkertaisesti liittää php-koodin sivupalkkiin, se näkyi pelkkänä tekstinä. Eli sitä ei suoritettu funktiona.

Miksi sinun on suoritettava PHP-koodi WordPressissä viesteissä, sivuilla ja sivupalkeissa? Jokainen verkkovastaava päättää itse! Esimerkiksi viesteihisi piti lisätä jonkinlainen PHP-koodilla luotu skripti, tai sinun on näytettävä jokin epätavallinen valikko sivupalkissa, et koskaan tiedä.

Joten, jotta voit näyttää suoritettavan php-koodin WordPressissä, sinun on suoritettava joitain toimintoja, ja nyt selvitetään, mitkä...

Kuinka näyttää suoritettava PHP-koodi WordPressissä ilman laajennusta?

Tämä menetelmä PHP-koodin tulostamiseksi WordPressiin on merkityksellinen niille, jotka vastustavat kiihkeästi tarpeettomien laajennusten asentamista resursseihinsa. Ja nyt saat selville, kuinka tämä tehdään.

Tätä varten sinun on tehtävä joitain muutoksia tiedostoon Functions.php aktiivinen verkkosivustosi teema. Lisää tämä koodi aivan loppuun ennen " ?> " :

/* lisätäksesi suoritettavan php-koodin WordPress-artikkeleihin/sivuihin, käytä tätä lyhytkoodia: code */ function exec_php($matches)( eval("ob_start();".$matches."$inline_execute_output = ob_get_contents();ob_end_clean()) ;"); return $inline_execute_output; ) funktio inline_php($content)( $content = preg_replace_callback("/\((.|\n)*?)\[\/exec\]/", "exec_php", $content ); $sisältö = preg_replace("/\((.|\n)*?)\[\/exec\]/", "$1", $sisältö; palauttaa $sisältö; ) add_filter("the_content", " inline_php", 0);

Käytä sitten tätä lyhytkoodia viesteissäsi ja artikkeleissasi suoritettavan php-koodin lisäämiseksi:

Tässä php koodi

  • Pieni selvennys, joka on erittäin tärkeä kohta php-koodin oikealle näyttämiselle ja ulostulolle viesteissäsi sivustolla!

Varmista, että kun upotat PHP-koodisi lyhytkoodiin, älä käytä tätä: ""! Eli lyhytkoodiin lisätyn suoritettavan php-koodin pitäisi näyttää tältä ei näin " " , A kuten tämä "kaikupäivämäärä("Y"); Ja lopulta, kun liität sen lyhytkoodiin, se näyttää tältä:

Kaikupäivämäärä("Y");

  • Toinen varoitus aloitteleville verkkovastaaville!

PHP-koodin suorittaminen WordPress-viesteissäsi tällä tavalla tekee moottoristasi haavoittuvan kaikenlaisille hakkereille - krakkauksille, jotka voivat käyttää sitä omiin itsekkäisiin tarkoituksiinsa. Tätä varten sinun on muutettava arvoa " exec" tiedostoon lisätyssä koodissa Functions.php omallesi, jonka tiedät vain sinä! Ja vastaavasti käytä samaa arvoa lyhytkoodeja lisätä viesteihin.

Tällä toiminnolla voit välttää sen tosiasian, että joku voi hyödyntää tämän toiminnon käytön seurauksena syntyvää mahdollista "reikää" - lisää PHP-koodi Wordpressiin.

Tässä on kyse php-koodin lisäämisestä WordPressiin ilman lisäosaa.

Nyt selvitetään, kuinka voit myös lisätä php-koodin WordPressiin, mutta käyttämällä laajennusta...

Kuinka upottaa suoritettavaa PHP-koodia WordPressiin Exec-PHP-laajennuksella?

PHP-koodin lisäämiseen WordPressiin suorittamista varten on monia laajennuksia. Mutta kaikki eivät ole turvallisia, koska kun ne asennetaan ja käytetään, moottoriin ilmestyy haavoittuvuuksia, joita häikäilemättömät hakkerit voivat hyödyntää.

Kerron sinulle nyt turvallisimmasta ja toimivimmasta lisäosasta php-koodin suorittamiseen WordPressissä - tämä on Suorita-PHP. Ensin sinun on ladattava se tai osoitteesta virallinen WordPress-sivusto tai asenna se yksinkertaisesti sivuston hallintapaneelista. Toivottavasti tiedät kuinka tämä tehdään?! Jos et tiedä, niin katso. Mukana on myös video, jossa voit nähdä kaiken omin silmin. Vaikka puhumme eri laajennuksen asentamisesta, periaate on sama.

Kun olet asentanut ja aktivoinut laajennuksen, seuraavat näkyvät järjestelmänvalvojan päävalikossa:

Napsauta sitä ja sinut ohjataan:

Valitse tästä suorittaaksesi/ohittaaksesi PHP-koodin widgeteissä ja se on siinä.

Tämän jälkeen, jotta voit lisätä suoritettavaa PHP-koodia WordPressiin viesteissä ja sivuissa, sinun on valittava ruutu profiilissasi - :

Kaikki. Nyt voit lisätä minkä tahansa PHP-koodin WordPressissä sivuillesi ja viesteillesi ja se suoritetaan!

Kiitos huomiostasi! Onnea kaikille! Nähdään taas!

Kaikki WordPressiin perehtyneet ovat kuulleet teema (template) functions.php-tiedostosta. Kaikki eivät kuitenkaan ymmärrä sen tarkoitusta hyvin, vaan näkevät sen vain tiedostona, joka tallentaa erilaisia ​​PHP-toimintoja. Internetissä, kuten sivustollani, usein ehdotetaan PHP-koodin lisäämistä tähän tiedostoon. Kaikki koodit eivät kuitenkaan toimi tälle tiedostolle. Ei siksi, että se ei toimisi, vaan koska se ei sovi käyttölogiikkaan.

Lisäksi aloittelijat tekevät virheitä editoidessaan functions.php:tä, joiden vuoksi sivusto lakkaa toimimasta.

Tässä artikkelissa yritän pohtia kaikkia näitä kohtia: milloin functions.php:tä käytetään ja milloin on parempi olla tekemättä tätä, mitä virheitä voi tapahtua muokattaessa functions.php:tä.

Ominaisuudet functions.php

Functions.php sijaitsee teemakansiossa ja latautuu joka kerta, kun tarkastellaan sivuston ulkoista osaa, hallintapaneelissa ja jopa AJAX-pyyntöjen aikana. Ei ole tapausta, jolloin functions.php ei sisällytettäisi, ja tämä avaa laajoja mahdollisuuksia kehittäjille.

Esimerkiksi seuraava teeman functions.php-tiedostoon lisätty koodi laajentaa teeman ominaisuuksia ottamalla käyttöön viestien pikkukuvien tuen:

Add_action("after_setup_theme", "wp_kama_theme_setup"); function wp_kama_theme_setup())( // Pikkukuvien tuki add_theme_support("post-thumbnails"); )

Toinen esimerkki, koodi korvaa WordPressin hallintapaneelin alatunnisteen tekstin tietokantapyyntöjen määrästä, sivun luomisajasta ja muistin käytöstä:

## Tietoa tietokannan pyyntöjen määrästä hallintapaneelissa add_filter("admin_footer_text", "wp_usage"); // hallintapaneelissa add_filter("wp_footer", "wp_usage"); // verkkosivustolla funktio 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 plugins

- "Lisäosat toimivat hitaammin kuin koodi functions.php-tiedostossa", tietämättömät sanovat - tämä ei ole totta!

Teoriassa koodin lisääminen functions.php-tiedostoon on sama asia kuin laajennuksen asentaminen, mutta se ei ole sama asia. Loppujen lopuksi, kun vaihdamme teemaa, saamme täysin erilaisen functions.php:n ja kaikki tehdyt muutokset menetetään, mutta laajennus säilyy riippumatta siitä, kuinka paljon teemaa muutetaan. Näistä syistä meidän on viitattava functions.php-tiedostoon. Jos lisätty toiminnallisuus ei liity pelkästään teemaan, vaan myös koko sivustoon, kannattaa harkita sen liittämistä laajennuksena.

Toinen yllä oleva esimerkki on "Tiedot tietokantaan tehtyjen kyselyiden määrästä hallintapaneelin alatunnisteessa". Loogisesti se ei sovellu käytettäväksi functions.php-tiedostossa. Koska jos muutamme mallia, menetämme tämän toiminnon, mutta sitä käytetään hallintapaneelissa ja sitä tarvitaan riippumatta siitä, mitä teemaa käytetään.

Joten poistetaan se functions.php:stä ja tehdään siitä laajennus - se on helppoa!

Laajennuksen luomiseksi sinun on luotava tiedosto alla olevalla koodilla (tiedoston nimi voi olla mikä tahansa), lisätä se laajennuksen hakemistoon wp-content/plugins/ ja aktivoida laajennus hallintapaneelissa:

Jos et halua nähdä toista laajennusta hallintapaneelissa, voit käyttää Must-Use -laajennuksia.

Mitä functions.php oikeastaan ​​tekee?

Kuten ylempänä kirjoitin: functions.php on tarpeen teeman toiminnallisuuden laajentamiseksi ja vain sitä varten! Tähän tiedostoon sinun on lisättävä koodi, jota tarvitaan itse mallille, mutta ei koko sivustolle.

Jos jossain resurssissa sinua pyydetään lisäämään koodia functions.php-tiedostoon, ja koodin toiminto ei liity suoraan malliin, älä ole laiska tekemään laajennus tästä koodista ja ehkä tulevaisuudessa välttää aiemmin lisättyjen toimintojen odottamaton menetys.

Kuinka functions.php ladataan

Functions.php sisällytetään nykyisen teeman alustuksen aikana, kun kaikki WordPress-toiminnot ja kaikki aktiiviset liitännäiset on otettu käyttöön. Kuvaan lyhyesti WordPressin latauskronologiaa, josta näet, milloin tärkeät tiedostot on yhdistetty:

Index.php wp-blog-header.php wp-load.php wp-config.php wp-settings.php // Perustoiminnot on kytketty (yhteys $wpdb-tietokantaan ja suodatinjärjestelmään) // Perussuodattimet ovat kytketty // SHORTINIT: Latauksen lopettaminen, jossa on vain alkeellisinta: if (SHORTINIT) return false; // koko WordPress-ympäristö on yhdistetty: perustoiminnot, suodattimet // pakolliset lisäosat liitetään, sitten tapahtuma laukeaa: do_action("muplugins_loaded"); // aktivoidut laajennukset liitetään, sitten tapahtuma käynnistyy: do_action("plugins_loaded"); // Yleiset muuttujat on asetettu: wp_the_query, wp_query, wp_rewrite, wp, wp_widget_factory, wp_roles ... do_action("setup_theme"); // asentaa nykyisen teeman // yhdistää teematiedoston >>>>>>>>>>>>> functions.php<<<<<<<<<<<< do_action("after_setup_theme"); // событие, когда среда WP, все плагины и тема полностью подключены, но на экран еще ничего не выведено: do_action("init"); // проверка статуса сайта для мультисайтовой сборки // тоже самое что init только после проверки статуса (до этой строки работа PHP может не дойти) do_action("wp_loaded"); wp() // заполняет основной запрос WP и все глобальные переменные связанные с ним wp-includes/template-loader.php // подключает нужный файл шаблона

WordPressin ja erityisesti functions.php:n latausprosessi näkyy hyvin tässä kuvassa:

WordPressin latausjärjestelmä

Virheet functions.php:ssä koodia liitettäessä

Olen toistuvasti törmännyt virheisiin liittyviin kysymyksiin, kuten: "Koodin asennuksen jälkeen functions.php-tiedostoon sivusto lakkasi toimimasta - valkoinen näyttö. Mitä minun pitäisi tehdä?" Itse törmäsin joskus vastaavaan.

Minulle jotkut ratkaisut tähän ongelmaan jäivät mysteeriksi pitkään - näytti siltä, ​​etten tehnyt mitään, enkä edes tanssinut tamburiinilla, mutta kerran kaikki toimi. Miksi tämä tapahtuu? Katsotaanpa mahdollisia tilanteita, joiden vuoksi sivusto saattaa "rikkoutua" ja niiden selityksiä:

    Lisäät valmiin koodin - sivusto lakkaa toimimasta.

  1. Muokkaat functions.php:tä - sivusto lakkaa toimimasta.

Useimmiten kyse on PHP-tunnisteiden avaamisesta ja sulkemisesta. Yleensä jos lisäämäsi koodin alussa ja lopussa on nämä tunnisteet, ne on poistettava. Functions.php-tiedosto ei myöskään saa näyttää tekstiä (HTML-koodia tai muuta sisältöä) näytöllä. Tekstin tulostus on sallittu vain funktioissa, joita käytetään myöhemmin mallissa tai jotka on kiinnitetty koukkuihin (katso lisätietoja alta).

Ei merkkejä ennen sallittuja, mukaan lukien näkymätön merkit (rivinvaihto), koska functions.php yhdistetään ennen http-otsikoiden asettamista (sellaiset otsikot välittävät erilaisia ​​tietoja, esimerkiksi että tämä on html-dokumentti; että utf-8-koodaus on erilainen). PHP-sääntöjen mukaan sisältö tulee näyttää näytöllä otsikoiden lähettämisen jälkeen. Ja kaikki mitä on ulkopuolellatämä on sisältö - näytöllä näkyvä teksti, jopa näkymätön \n-merkki. Siksi tämä teksti aiheuttaa virheen.

Virheiden välttämiseksi harkitse 4 kohtaa:

#1 Oikea pesintä

Meillä oli esimerkiksi tämä rakenne:

........ tässä on koodi......... ?>

Oikein näin:

#2 Ei rivinvaihtoja, välilyöntejä, tekstiä ennen

Tämä koodi aiheuttaa virheen:

Mutta tämä ei:

On loogisempaa kirjoittaa se näin:

Sattuu niin, että rivinvaihto sijoitetaan aivan functions.php:n loppuun, ja sitten siitä tulee todellinen ongelma, koska kaikki näyttää olevan oikein, mutta sivusto ei toimi. Oikeastaan ​​jälkeen?> tai ennen

tässä on tyhjä rivi

Tästä syystä monet kehittäjät poistavat sulkevan ?> -tunnisteen kokonaan, mikä on hyväksyttävää PHP:ssä. Suosittelen aina tekemään näin:

#3 KäytäPHP-toimintojen sisällä

Jos functions.php:ssä on funktio, tunnisteita voidaan käyttää tämän funktion sisällä, esimerkiksi korostaaksesi visuaalisesti funktion sisällä olevaa HTML-koodia:

tämä on html-koodi

Tosiasia on, että tässä tapauksessa toiminto on vain rekisteröity eikä suorita mitään toimintoja. Kaikki funktion sisällä (välillä ( )) ei toimi ennen kuin tämä funktio on kutsuttu, ja tällaisia ​​toimintoja kutsutaan yleensä mallista tai suodattimien kautta, kun HTTP-otsikot on lähetetty. Joten tässä esimerkissä voimme jättää rivinvaihdot huomioimatta ja käyttää ?> ja

#4 Koodaus

Toinen huomautus functions.php-tiedostosta: aseta tiedoston koodaukseksi UTF-8 (UTF-8 ilman tuoteluetteloa). Muussa tapauksessa, jos funktiotiedostossa on kyrillistä tekstiä, se näytetään käsittämättömillä merkeillä: hölynpölyä, kirjoituksia - kutsu sitä miksi haluat.