✅ WEB- ja WordPress -uutiset, -teemat, -laajennukset. Täällä jaamme vinkkejä ja parhaita verkkosivustoratkaisuja.

Opas: Kaikki koukuista WordPressissä

34

Oletko koskaan sanonut, että ratkaisu ongelmaasi on, että sinun täytyy "kiinnittää" johonkin, jotta voit tehdä asiasi tai käyttää add_filterymmärtämättä, miksi se sotkee ​​asioita? Koukut muodostavat WordPressin perustan ja tarjoavat teemoja ja laajennuksia vuorovaikutukseen tai Tässä viestissä kerromme, mitä koukut ovat, miten ne toimivat ja miten voimme käyttää niitä.

Mitä ovat koukut?

Kun WordPress käy koodinsa läpi (aina luokkien lataamisen alusta, laajennusten lataamisesta, teeman lataamisesta, nykyisen pyynnön kyselyn tekemisestä ja lopuksi HTML:n hahmontamisesta), se kulkee joukon "tarkistuspisteitä" läpi; koukut. Kun koukku havaitaan, WordPress lopettaa toimintansa – ja tarkistaa, onko tässä koukussa suoritettavia toimintoja (teemassa, laajennuksessa tai itse WordPressissä). Jos niitä on, WordPress suorittaa kaikki nämä toiminnot ja jatkaa sitten siitä, mihin se jäi.

Tämä mahdollistaa sen, että liitännäiset, teemat ja WordPress itse voivat "kiinnittää" tiettyihin kohtiin lisätäkseen esim. tyylisivuja teeman <head>tunnisteeseen, muokatakseen WordPressin kyselyitä viesteissä tai yksinkertaisesti muuttaa julkaisun sisältöä niin halutessaan.

Koukkuja on kahdenlaisia; toiminnot ja suodattimet. Ne toimivat melko samankaltaisesti toistensa kanssa, mutta yhtä poikkeusta lukuun ottamatta, jota tarkastellaan tarkemmin alla.

Toiminnot ja suodattimet

Liittyäksesi toimintoon tai suodattimeen sinun on määritettävä, mitä koukkua (sen nimen perusteella) haluat käyttää, ja määritettävä takaisinsoitto – joka on suoritettavan toiminnon nimi. Useimmissa tapauksissa koukut tarjoavat koukun kannalta oleellisia parametreja tai muuttujia.

Toiminnot ovat yksinkertaisesti "tarkistuspisteitä" WordPressin toteutuksessa, joissa voit suorittaa tehtävän tai toistaa jotain. Joissakin harvinaisissa tapauksissa voit muokata objektia (parametreissa), jotta kaikki seuraavat suoritukset toimivat muuttuneen objektin kanssa.

Suodattimet on tarkoitettu muuttujan tai lähdön vaihtamiseen. Kaikki suodatinkoukut tarjoavat muuttujan, jota voit muuttaa ensimmäisenä parametrina, ja voit muokata sitä tai palauttaa jotain muuta.

WordPress käyttää monia koukkuja, mutta voit luoda oman laajennuksessasi tai teemassasi. Näin kehittäjät voivat laajentaa ja muokata koodiasi. esimerkiksi muokkaamalla laajennusta teeman kautta tai muokkaamalla pääteemaa alateeman kautta.

Monet WordPressin toiminnot, joita tyypillisesti käytetään viestien tulostamiseen, ovat myös suodattimia tai toimintoja. Esimerkiksi funktio the_title()tulostaa postauksen otsikon, mutta se on myös suodatin.

Katsotaanpa, miten kiinnitämme nämä käytännössä.

Kiinni toimintaan

Toimintoon kiinnittymiseen käytetään menetelmää add_action(). Se vaatii vähintään kaksi parametria; koukun nimi ja takaisinsoitto; sen toiminnon nimi, jonka haluat suorittaa. Vaihtoehtoisesti voit antaa prioriteetin kolmantena parametrina ja määrittää takaisinsoittotoimintoon välitettävien argumenttien määrän. Tarkastelemme kahta valinnaista parametria myöhemmin, mutta toistaiseksi tässä on esimerkki add_action:

add_action('init', 'my_function_name'); function my_function_name() { // Do your stuff }

Ensimmäinen parametri add_actionon toiminnon nimi; tässä tapauksessa init, mikä on melko yleinen WordPress-koukku, joka tapahtuu alustuksen aikana. Toinen parametri on takaisinsoittosi, tässä tapauksessa sen funktion nimi, jonka haluamme suorittaa. Sitten sinun tarvitsee vain määrittää funktio tällä nimellä ja lisätä koodisi sen sisään.

Voit myös käyttää anonyymejä funktioita, joissa määrität funktion sisällä add_actionsen sijaan, että antaisit funktion nimen, kuten niin;

add_action('init', function() { // Do your stuff });

Monet kehittäjät pitävät tätä menetelmää parempana, koska se estää samannimisen PHP-funktion uudelleenmäärittelyn.

Jos sinun on suoritettava PHP-luokassa määritetty funktio, sinun on annettava takaisinkutsuparametriksi taulukko; jossa ensimmäinen elementti on luokan objekti ja toinen elementti on funktion nimi:

class MyClass { public function __construct() { add_action('init', [$this, 'myFunctionName']); }   public function myFunctionName() { // Do your stuff } }

Kiinnitys suodattimiin

Suodattimeen kiinnittämistä varten käytät toimintoa add_filter(). Kuten yllä, ensimmäinen parametri on suodattimen nimi ja toinen on takaisinsoittosi. Vaihtoehtoisesti voit antaa prioriteetin kolmanneksi parametriksi ja argumenttien määrän neljänneksi. Tässä on esimerkki add_filter:

add_filter('the_title', 'my_function_name'); function my_function_name($title) { // Do your stuff return $title; }

Yllä olevassa esimerkissä kiinnitämme suodattimen the_title(joka tulostaa viestin otsikon) ja käskemme WordPressiä suorittamaan toimintomme. Kaikki suodattimet tarjoavat aina yhden argumentin; muutettava muuttuja. Toiminnossani nimesin sen $title, koska tiedän sen sisältävän viestin otsikon. Funktion sisällä voin muokata sitä tai ohittaa muuttujan kokonaan. On tärkeää muistaa, että suodattimissa on aina palautettava muuttuja. Jos et palauta jotain takaisinsoittofunktiossasi, muuttuja tyhjenee. Jos ohitin paluulausekkeen yllä olevassa esimerkissä, mikään viestien otsikko ei kaikuisi missään.

Muuttuja-argumentti ja sääntö palauttaa jotain takaisinsoittofunktiossa on käytännössä ainoa ero suodattimien ja toimien välillä. Kaikki muu toimii samalla tavalla. Voit seurata yllä olevia esimerkkejä anonyymeistä funktioista ja luokista suodattimien toimien osalta sekä valinnaisia ​​parametreja, prioriteettia ja argumenttien määrää. jota katsomme seuraavaksi.

Prioriteetti

Kolmas (valinnainen) parametri add_actionja add_filteron kokonaisluku, joka määrittää takaisinsoittotoiminnon prioriteetin. Tämä on hyödyllistä tapauksissa, joissa toimintoja on useita (ei välttämättä sinulta teemassasi tai laajennuksessasi, muista, että WordPress itse käyttää omia koukkujaan), ja sinun on päätettävä, mikä niistä suoritetaan ensin.

Jos prioriteettia ei ole annettu, sen oletusarvo on 10. Mitä pienempi prioriteetti on, sitä aikaisemmin se suoritetaan, ja mitä korkeampi prioriteetti, sitä myöhemmin se suoritetaan. Et voi antaa negatiivista prioriteettia.

Kuvittele useita takaisinsoittotoimintoja, jotka on rekisteröity osoitteeseen init. Jos useille takaisinkutsuille ei ole asetettu prioriteettia, WordPress suorittaa ne siinä järjestyksessä, jossa ne löydettiin (esimerkiksi functions.phplaajennuskoodissasi).

add_action('init', 'my_function_name'); add_action('init', 'my_second_function_name'); add_action('init', 'my_third_function_name', 12); add_action('init', 'my_fourth_function_name', 1);

Tässä järjestyksessä WordPress suorittaa yllä olevat takaisinkutsut:

  1. my_fourth_function_name(prioriteetti 1)
  2. my_function_name(prioriteetti 10)
  3. my_second_function_name(prioriteetti 10, mutta näkyy myöhemmin koodissa)
  4. my_third_function_name(prioriteetti 12)

Argumenttien määrä

Yleensä koukut tarjoavat joitain lisätietoja, jotka ovat olennaisia ​​ja hyödyllisiä takaisinsoittotoimintojen kannalta. Esimerkiksi toiminto save_post(suoritetaan aina, kun viestiä päivitetään) tarjoaa kaksi mahdollista argumenttia; viestitunnus ja viestiobjekti. Nämä ovat hyödyllisiä operaatioissa, joita joudut yleensä suorittamaan tällä koukalla (jos esimerkiksi haluat tallentaa postin metasisällön, tarvitset viestitunnuksen).

Jos toiminnolle tai suodattimelle ei annettu argumenttien määrää, se on oletusarvo 1. Tästä syystä sinun ei tarvitse määrittää 1: add_filtertä päästäksesi muuttujaan, johon suodatin on koukussa. Toiminnot eivät kuitenkaan voi välittää argumentteja, vaikka argumenttien määräksi on asetettu oletusarvo 1.

Katsotaanpa esimerkkiä argumenttien määrän määrittämisestä ja siitä, kuinka käytämme niitä takaisinsoittotoiminnossamme:

add_action('save_post', 'my_function_name', 10, 2); function my_function_name($post_id, $post) { // Do your stuff }

Yllä olevassa esimerkissä käskemme WordPressiä välittämään kaksi argumenttia takaisinsoittotoimintoomme. Muista, että meidän on määritettävä prioriteetti kolmanneksi parametriksi, joten yleensä määritämme oletusarvon, joka on 10. Mitä tulee takaisinsoittofunktiollemme, voimme nyt määrittää samat numeroargumentit, joita pyysimme, yllä olevassa esimerkissä oli 2.

Jos olisimme asettanut yllä olevassa esimerkissä argumenttien lukumääräksi 1, vain ensimmäinen argumentti takaisinsoittofunktiossamme täytettäisiin. Toinen, $post, olisi määrittelemätön.

Entä jos tarvitsemme tietoja, joita ei ole välitetty koukussa?

On täysin koukun luoneen kehittäjän tehtävä määrittää, mitkä argumentit voidaan välittää. Tämä tarkoittaa, että et voi yksinkertaisesti pakottaa siihen, mitä argumentteja haluat tai tarvitset omassa add_actiontai add_filter. Onneksi useimmissa tapauksissa meillä on vaihtoehtoja saada tarvitsemamme muuttujat. Jos kytket toimintoon tai suodattimeen, jossa tiedät, että tietyt globaalit muuttujat tulisi määrittää, voit käyttää näitä globaaleja muuttujia takaisinsoittotoiminnollasi. Lisäksi WordPressissä on koko joukko ehdollisia tageja, joita voit käyttää koukussa olevissa funktioissasi (lukuun ottamatta hyvin varhaisia ​​koukkuja, jotka tapahtuvat ennen kuin WordPress määrittelee nämä ehdolliset tagit)

Katsotaanpa esimerkkiä globaalien muuttujien käyttämisestä. Suodatin the_titletarjoaa post ID:n valinnaisena argumenttina, jota voimme käyttää määrittämällä sen hyväksyttäväksi argumentiksi;

add_filter('the_title', 'my_function_name', 10, 2); function my_function_name($title, $post_id) { if ($post_id == 1) { return 'First post ever!'; } return $title; }

Voimme kuitenkin saavuttaa saman tuloksen:

Jos tiedät, että globaali muuttuja on määritetty sen pisteen mukaan, jossa koukku suoritetaan, voit määrittää ne maailmanlaajuisiksi takaisinsoittotoiminnossasi ja käyttää tietoja sieltä. Esimerkiksi määrittäminen global $wp_queryyllä olevassa esimerkissä antaa sinulle myös pääsyn koko wp_query-objektiin funktion takaisinkutsun sisällä.

WordPressin ehdolliset tagit ovat erittäin hyödyllisiä. Ellei olet koukussa koukkuun, joka ilmenee hyvin varhaisessa WordPressin toteutuksessa, ne ovat saatavilla. On olemassa ehdollisia tunnisteita, joilla voit tarkistaa, millä sivulla (mallissa) olet, oletko valikossa tai viestisilmukassa ja paljon muuta. Esimerkiksi kun muokkaat viestikyselyä koukun pre_get_postsavulla, on erittäin hyödyllistä varmistaa, että koodisi toimii vain tietyissä tapauksissa. Esimerkiksi;

add_action('pre_get_posts', 'my_function_name'); function my_function_name($query) { if (!is_admin()) { // Do your stuff } }

Koska koukku pre_get_poststoimii sekä järjestelmänvalvojassa että käyttöliittymässä, voimme käyttää ehdollista tagia varmistaaksemme, että koodimme vaikuttaa vain käyttöliittymän kyselyyn.

Omien koukkujen luominen

Voit määrittää omat toiminnot ja suodattimet. Jos olet teeman tai laajennuksen kehittäjä, sinua kehotetaan tekemään niin, jotta muut voivat muokata koodiasi muuttamatta lähdekoodia.

Rekisteröi toiminto -sovelluksella do_action()ja rekisteröi suodatin -sovelluksella apply_filters().

do_action()Vaatii vähintään 1 parametrin ; koukun nimi. Muista, että koukun nimen on oltava yksilöllinen (älä kutsu sitä esim init. koska tämä on WordPress-ydinkoukku). Aseta se do_action()minne haluat koukun näkyvän. Voit esimerkiksi sijoittaa koukun teemasi sisään header.phpheti rungon jälkeen määrittääksesi koukun, johon kehittäjät voivat tulostaa skriptejä tai muuta sisältöä.

Voit lisätä niin monta parametria do_actionkuin haluat koukun nimen jälkeen. Yritä pitää mielessä, mitä datakehittäjät tarvitsevat koukkuihisi, jotka eivät muuten ole helposti saatavilla.

apply_filters()Vaatii vähintään 2 parametria ; koukun nimi ja muuttuja, johon rekisteröit suodattimen. Teemasi voi esimerkiksi rekisteröidä suodattimen joidenkin HTML-luokkien ympärille, jotta kehittäjät voivat muokata tai lisätä näitä:

Kuten toimintoihin, voit lisätä niin monta parametria apply_filterskuin haluat kahden pakollisen parametrin jälkeen.

Päätelmät ja hyödyllisiä resursseja

Tämän avulla toivon, että olet saavuttanut vankan käsityksen siitä, kuinka WordPress käyttää suurinta osaa koodistaan, kuinka voit muokata koodia ja kuinka sinä voit kehittäjänä antaa muiden kehittäjien tehdä muutoksia koodiisi.

Tämä verkkosivusto käyttää evästeitä parantaakseen käyttökokemustasi. Oletamme, että olet kunnossa, mutta voit halutessasi kieltäytyä. Hyväksyä Lisätietoja