✅ WEB ja WordPressi uudised, teemad, pistikprogrammid. Siin jagame näpunäiteid ja parimaid veebisaidi lahendusi.

Juhend: kõik WordPressi konksude kohta

5

Kas teile on kunagi öeldud, et teie probleemi lahendus seisneb selles, et peate oma asja tegemiseks millegi külge haakima või kasutama add_filter, ilma et mõistaksite, miks see asju segamini ajab? Konksud moodustavad WordPressi aluse ning pakuvad teemasid ja pistikprogramme, kuidas suhelda või kasutada. Selles postituses kirjeldame, mis on konksud, kuidas need töötavad ja kuidas neid kasutada.

Mis on konksud?

Kuna WordPress jookseb oma koodi läbi (alates klasside laadimisest, pistikprogrammide laadimisest, teema laadimisest, praeguse päringu päringu tegemisest ja lõpuks HTML-i renderdamisest), jookseb see läbi hulga kontrollpunkte; konksud. Konksu avastamisel lõpetab WordPress oma tegevuse – ja kontrollib, kas sellel konksul on käivitamiseks registreeritud funktsioone (teemas, pistikprogrammis või WordPressis endas). Kui need on olemas, käivitab WordPress kõik need funktsioonid ja jätkab sealt, kus pooleli jäi.

See võimaldab pistikprogrammidel, teemadel ja WordPressil endal teatud punktide külge haakida, et lisada teema <head>sildis nt stiililehti, muuta seda, kuidas WordPress postitusi pärib, või soovi korral lihtsalt postituse sisu muuta.

Konkse on kahte tüüpi; toimingud ja filtrid. Need töötavad üksteisega üsna sarnaselt, kuid ühe erandiga, mida me allpool lähemalt vaatleme.

Toimingud ja filtrid

Toimingu või filtri külge haakimiseks peate määratlema, millist konksu (nime järgi) soovite kasutada, ja määratlema tagasihelistamise – see on funktsiooni nimi, mida soovite käivitada. Enamikul juhtudel pakuvad konksud parameetreid või muutujaid, mis on konksu jaoks olulised.

Toimingud on WordPressi täitmisel lihtsalt "kontrollpunktid", kus saate ülesande täita või midagi kordada. Mõningatel harvadel juhtudel saate muuta objekti (esitatud parameetrites), nii et kogu järgnev täitmine töötaks selle muudetud objektiga.

Filtrid on mõeldud muutuja või väljundi muutmiseks. Kõik filtrikonksud pakuvad muutujat, mida saate esimese parameetrina muuta, ja võimaldavad teil seda muuta või tagastada midagi muud.

WordPressil on palju konkse, kuid saate oma pistikprogrammis või teemas luua oma. See võimaldab arendajatel teie koodi laiendada ja muuta; Näiteks pistikprogrammi muutmine teema kaudu või vanemateema muutmine alamteema kaudu.

Paljud WordPressi funktsioonid, mida tavaliselt kasutatakse postituste printimiseks, on samuti filtrid või toimingud. Näiteks the_title()prindib funktsioon välja postituse pealkirja, kuid see on ka filter.

Vaatame, kuidas me neid praktikas rakendame.

Haakimine tegudele

Toimingu külge haakimiseks kasutate meetodit add_action(). See nõuab vähemalt kahte parameetrit; konksu nimi ja tagasihelistamine; selle funktsiooni nimi, mida soovite käivitada. Soovi korral saate määrata prioriteedi kolmanda parameetrina ja määrata argumentide arvu, mis edastatakse teie tagasihelistamise funktsioonile. Vaatleme kahte valikulist parameetrit hiljem, kuid praegu on siin näide add_action:

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

Esimene parameeter add_actionon toimingu nimi; antud juhul init, mis on üsna tavaline WordPressi konks, mis juhtub lähtestamise ajal. Teine parameeter on teie tagasihelistamine, antud juhul selle funktsiooni nimi, mida soovime käivitada. Seejärel pole vaja teha muud, kui määratleda selle nimega funktsioon ja lisada sellesse oma kood.

Võite kasutada ka anonüümseid funktsioone, kus saate add_actionfunktsiooni nime andmise asemel määrata funktsiooni sees;

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

Paljud arendajad eelistavad seda meetodit, kuna see hoiab ära sama nimega PHP funktsiooni uuesti määratlemise riski.

Kui teil on vaja käivitada PHP-klassis määratletud funktsioon, peate tagasihelistamise parameetrina esitama massiivi; kus esimene element on klassi objekt ja teine ​​element on funktsiooni nimi:

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

Filtrite külge haakimine

Filtri külge haakimiseks kasutate funktsiooni add_filter(). Sarnaselt ülaltoodud toimingutele on esimene parameeter filtri nimi ja teine ​​teie tagasihelistamine. Soovi korral saate määrata prioriteedi kolmanda parameetrina ja argumentide arvu neljanda parameetrina. Siin on näide add_filter:

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

Ülaltoodud näites ühendame filtri the_title(mis prindib välja postituse pealkirja) ja käsib WordPressil meie funktsiooni käivitada. Kõik filtrid annavad alati ühe argumendi; muutuja, mida muuta. Oma funktsioonis nimetasin seda nii, $titlenagu tean, et see sisaldab postituse pealkirja. Funktsiooni sees saan seda muuta või muutuja täielikult tühistada. Oluline on meeles pidada, et filtrites peate alati tagastama muutuja. Kui te tagasihelistamisfunktsioonis midagi ei tagasta, tühjeneb muutuja. Kui jätaksin ülaltoodud näites tagastuslause vahele, ei kajaks ükski postituse pealkiri kunagi kuskil.

Muutuja argument ja millegi tagastamise reegel teie tagasihelistamisfunktsioonis on praktiliselt ainus erinevus filtrite ja toimingute vahel. Kõik muu töötab samamoodi. Saate järgida anonüümsete funktsioonide ja klasside näiteid, mis on näidatud ülaltoodud filtrite toimingute jaoks, samuti valikuliste parameetrite prioriteetsus ja argumentide arv; mida me järgmisena vaatame.

Prioriteet

Kolmas (valikuline) parameeter add_actionja add_filteron täisarv, mis määrab teie tagasihelistamisfunktsiooni prioriteedi. See on kasulik juhtudel, kui on mitu funktsiooni (mitte ilmtingimata teilt teie teemas või pistikprogrammis, pidage meeles, et WordPress ise kasutab oma konkse) ja peate otsustama, millist neist kõigepealt käivitada.

Kui prioriteeti pole ette nähtud, on see vaikimisi 10. Mida madalam on prioriteet, seda varem see käivitatakse ja mida kõrgem prioriteet, seda hiljem see käivitatakse. Te ei saa anda negatiivset prioriteeti.

Kujutage ette mitu tagasihelistamisfunktsiooni, mis on registreeritud aadressile init. Kui mitmele tagasihelistamisele ei määratud prioriteeti, käivitab WordPress need nende leidmise järjekorras (näiteks functions.phpteie pistikprogrammi koodis).

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);

See oleks järjekord, milles WordPress käivitab ülaltoodud tagasihelistamised:

  1. my_fourth_function_name(prioriteet 1)
  2. my_function_name(prioriteet 10)
  3. my_second_function_name(prioriteet 10, kuid ilmub koodis hiljem)
  4. my_third_function_name(prioriteet 12)

Argumentide arv

Tavaliselt pakuvad konksud täiendavaid andmeid, mis on tagasihelistamise funktsioonide jaoks asjakohased ja kasulikud. Näiteks toiming save_post(käivitatakse alati, kui postitust värskendatakse) pakub kaks võimalikku argumenti; postituse ID ja postituse objekt. Need on kasulikud toimingute jaoks, mida tavaliselt selle konksu juures vajate (näiteks kui soovite salvestada postituse meta, vajate postituse ID-d).

Kui toimingu või filtri jaoks pole esitatud argumentide arvu, on see vaikimisi 1. Seetõttu ei pea te defineerima 1, add_filteret pääseda juurde muutujale, mille külge filter on ühendatud. Toimingud ei saa aga ühtegi argumenti edastada, kuigi argumentide arv on vaikimisi seatud 1-le.

Vaatame näidet argumentide arvu määratlemisest ja sellest, kuidas me oma tagasihelistamisfunktsioonis neile juurde pääseme:

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

Ülaltoodud näites käsime WordPressil edastada meie tagasihelistamise funktsioonile kaks argumenti. Pidage meeles, et kolmanda parameetrina peame määratlema prioriteedi, nii et tavaliselt defineerime vaikeväärtuse, mis on 10. Mis puutub tagasihelistamisfunktsiooni, saame nüüd määratleda sama arvu argumendid, mida küsisime, ülaltoodud näites oli 2.

Kui oleksime ülaltoodud näites seadnud argumentide arvu väärtusele 1, täidetaks meie tagasihelistamisfunktsiooni ainult esimene argument. Teine, $post, oleks määratlemata.

Mis siis, kui vajame andmeid, mida konksus ei edastatud?

See on täielikult konksu loonud arendaja otsustada, milliseid argumente saab edasi anda. See tähendab, et te ei saa lihtsalt peale suruda, milliseid argumente soovite või vajate oma add_actionvõi add_filter. Õnneks on meil enamikul juhtudel alternatiivid vajalike muutujate hankimiseks. Kui otsite toimingut või filtrit, mille puhul teate, et teatud globaalsed muutujad tuleks määratleda, pääsete neile globaalsetele muutujatele juurde tagasihelistamisfunktsioonis. Lisaks on WordPressil terve hulk tingimuslikke silte, mida saate oma konksuga funktsioonides kasutada (välja arvatud väga varajased konksud, mis ilmnevad enne, kui WordPress need tingimuslikud sildid defineerib)

Vaatame näidet globaalsetele muutujatele juurdepääsu kohta. Filter the_titlepakub postituse ID valikulise argumendina, millele pääseme juurde, kui määratleme selle vastuvõetava argumendina;

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; }

Samas saame sama tulemuse saavutada, kui;

Kui teate, et globaalne muutuja on määratletud konksu käitamise punktiga, saate need oma tagasihelistamise funktsioonis globaalsetena määratleda ja sealt andmetele juurde pääseda. Näiteks global $wp_queryülaltoodud näites määratlemine annab teile juurdepääsu ka täielikule wp_query objektile teie funktsiooni tagasihelistamisel.

WordPressi tingimussildid on äärmiselt kasulikud. Need on saadaval, välja arvatud juhul, kui olete konksu otsas, mis tekib WordPressi käivitamisel väga varakult. Tingimuslikud sildid kontrollivad, millisel lehel (mallil) te viibite, kas olete menüüs või postitustsüklis ja palju muud. Näiteks postituspäringu muutmisel konksu pre_get_postsabil on väga kasulik veenduda, et teie kood töötab ainult teatud juhtudel. Näiteks;

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

Kuna konks pre_get_poststöötab nii administraatoris kui ka kasutajaliideses, saame kasutada tingimuslikku märgendit tagamaks, et meie kood mõjutaks ainult kasutajaliidese päringut.

Oma konksude loomine

Saate määrata oma toimingud ja filtrid. Kui olete teema või pistikprogrammi arendaja, soovitame teil seda teha, et teised saaksid teie koodi muuta ilma lähtekoodi muutmata.

Registreerige toiming rakendusega do_action()ja registreerige filter rakendusega apply_filters().

Nõuab do_action()vähemalt 1 parameetrit; konksu nimi. Pidage meeles, et konksu nimi peab olema kordumatu (ärge nimetage seda nt init, kuna see on WordPressi põhikonks). Asetage do_action()konks sinna, kuhu soovite, et konks ilmuks. Näiteks võite asetada konksu oma teemasse header.phpkohe keha järele, et määratleda konks, kuhu arendajad saavad skripte või muud sisu väljastada.

Pärast konksu nime saate lisada nii palju parameetreid, do_actionkui soovite. Püüdke meeles pidada, mida andmearendajad teie konksudesse vajaksid, mis muidu pole kergesti ligipääsetavad.

Nõuab apply_filters()vähemalt 2 parameetrit; konksu nimi ja muutuja, millele te filtri registreerite. Näiteks võib teie teema mõne HTML-klassi ümber registreerida filtri, et võimaldada arendajatel neid muuta või lisada:

Nagu toimingute puhul, saate apply_filterspärast kahte kohustuslikku parameetrit lisada nii palju parameetreid, kui soovite.

Järeldus ja kasulikud materjalid

Sellega loodan, et olete saavutanud kindla arusaama sellest, kuidas WordPress enamikku oma koodist töötab, kuidas saate koodi muuta ja kuidas saate arendajana lubada ka teistel arendajatel oma koodi muuta.

See veebisait kasutab teie kasutuskogemuse parandamiseks küpsiseid. Eeldame, et olete sellega rahul, kuid saate soovi korral loobuda. Nõustu Loe rohkem