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

WordPressi tegevuskonksude põhitõed

17

Alati, kui kunagi hakkab arenenuma programmeerimisega tegelema – olgu see siis WordPressis või mõnes muus raamistikus, raamatukogus, sihtasutuses või programmeerimiskeeles – on aegu, mil uutest kontseptsioonidest võib sageli olla raskem aru saada kui teistest.

Üldiselt olen leidnud, et see on tõsi alati, kui inimene on õppinud näiteks objektorienteeritud programmeerimise põhitõdesid, kuid pole kokku puutunud teatud asjade, näiteks disainimustrite nüanssidega.

Näide: olen kirjutanud sündmustepõhisest kujundusmustrist (või avaldamisest-tellimisest või pubist/subist, nagu mõnele meeldib sellele viidata) teistes postitustes.

Jah, igaühel on teatud erinevused, kuid üldine idee on see, et midagi juhtub ja sündmus tõstatatakse ning kõik, kes seda sündmust kuulavad või selle sündmuse tellijad, reageerivad.

WordPressi tegevuskonksude põhitõed

Claus Grünstäudli foto saidil Unsplash

See on WordPressi peamine muster, mis võimaldab meil sõna otseses mõttes teatud täitmispunktidesse haakuda. Üldiselt võime neid WordPressis käsitada tegevuskonksudena.

Igatahes teeb rakendus meile teatud punktid kättesaadavaks, et saaksime oma funktsioone lisada. Kui see funktsioon on registreeritud, lahkub WordPress oma koodibaasist, hüppab meie omasse ja naaseb seejärel meie omasse.

Seda on piisavalt lihtne mõista, kuid mis siis, kui soovite oma koodis paljastada alasid, mis võimaldavad teistel teie koodiga haakida?

Tegevuskonksud WordPressis

Enne kui vaatate, kuidas WordPress neid mustreid rakendab, on oluline mõista selle mustri põhitõdesid. Kuigi see pole kaugeltki kõikehõlmav, on see mõeldud mustri põhimõistmiseks, et oleks võimalik lugeda ja kirjutada WordPressi-keskset koodi.

Niisiis, kuidas oleks hea Pubi/Sub-mustrist mõelda? Wikipedia määratleb selle järgmiselt:

Tarkvaraarhitektuuris on publish-subscribe sõnumside muster, kus sõnumite saatjad, mida nimetatakse avaldajateks, ei programmeeri sõnumeid otse konkreetsetele vastuvõtjatele, mida nimetatakse tellijateks, saatmiseks, vaid liigitavad avaldatud sõnumid klassidesse, teadmata, millised tellijad, kui neid on., võib olla. Samamoodi väljendavad tellijad huvi ühe või mitme klassi vastu ja saavad ainult huvipakkuvaid sõnumeid, teadmata, millised väljaandjad on olemas.

Mustri mõistmine

Seda võib alguses palju arvesse võtta. Ma ei tea, aga võtame selle lahti:

  1. On olemas teenus, meie puhul WordPress, mis vastutab sõnumite avaldamise eest kõigile, kes on tellinud (see ei pruugi teada, kes kuulab).
  2. Kui tellija kuulab, tegutseb ta seda toimingut kuuldes.
  3. Kui abonendi kood on käivitatud, naaseb programm algsesse täitmispunkti (see on koht, kuhu kirjastaja sõnumi saatis).

Sellel on nüansse, nagu asünkroonne funktsionaalsus ja muud sellised asjad, kuid see on rohkem arenenud, kui ma selles konkreetses postituses eelistaksin. Lõppude lõpuks on selle eesmärk panna alus funktsionaalsuse mõistmisele ja rakendamisele.

Asünkroonne funktsionaalsus võib sattuda lõimestamise või Ajaxi kaudu, need on olulised teemad, see pole see postitus.

Kuidas see WordPressis välja näeb?

Võib-olla on lihtsaim viis selle konkreetse mustri kirjeldamiseks WordPressis funktsioonikutsete kasutamine:

  • do_action
  • add_action

Mõnikord võib nomenklatuur olla segadusttekitav, kuid lihtsalt öeldes: do_action avaldab ja sündmuse ning lisab sündmusele_actioni tellijaid. Või võib-olla parem viis sellest mõelda on:

do_action käsib WordPressil teha kõik lisatud toimingud.

Mõnikord on abiks lihtsad fraasid, millega asjad toimivad. Ma ei tea, kas ülaltoodu on kõige tabavam või meeldejäävam fraas, aga see on midagi, eks?

Lisaks pange tähele, et do_action ja add_action on asjad, mis on WordPressi põhielemendid ja on saadaval ka meie arenduse jaoks. Enne kui läheme edasi, vaatame, mida igaüks neist tähendab:

Do_action jaoks :

See funktsioon käivitab kõik tegevuskonksuga seotud funktsioonid $tag. $tagUusi tegevuskonkse on võimalik luua lihtsalt selle funktsiooni kutsumisega, määrates parameetri abil uue konksu nime .

WordPressi tegevuskonksude põhitõed

Või veelgi lihtsamalt öeldes:

Täitke funktsioone, mis on ühendatud konkreetse tegevuskonksuga.

Konksudele viidates võivad need olla kas WordPressi määratletud konksud või kohandatud konksud, mille määrate oma teemas või pistikprogrammis.

WordPressi tegevuskonksude põhitõed

Mis puutub add_actioni :

Toimingud on konksud, mille WordPressi tuum käivitab teatud punktides täitmise ajal või konkreetsete sündmuste toimumisel. Pluginad saavad Action API abil määrata, et nendes punktides käivitatakse üks või mitu selle PHP funktsiooni.

WordPressi tegevuskonksude põhitõed

Ja sarnaselt lihtsamalt öeldes:

Seob funktsiooni konkreetse toimingu külge.

Selle seadistamine praktiliselt on veidi erinev, sest me kasutame tavaliselt WordPressi oma koodi lisamiseks add_actionit .

Praktiline näide

Näiteks võib-olla olete kirjutanud midagi sellist:

<?php
add_action('wp_insert_post_data', __NAMESPACE__. 'processPermalink');
/**
 * Processes the permalink so we can remove any characters that may cause a problem when communicating
 * with the API.
 *
 * @param  array $data The array of information about the post.
 * @return array $data The data without the malformed information in the post name for the URL.
 */
public function processPermalink($data)
{
    if (!in_array($data['post_status'], array('draft', 'pending', 'auto-draft'))) {
        $data['post_name'] =
            preg_replace(
                '/(%ef%b8%8f|™|®|©|™|®|©|™|®|©)/',
                '',
                $data['post_name']
            );
    }
    return $data;
}

Sel juhul on kuskil WordPressi koodibaasis käsk do_action konksu wp_insert_post_data jaoks ja see aktsepteerib funktsiooni ja edastab sellele vähemalt ühe parameetri.

Oma konksude lisamine

Aga mis siis, kui soovite anda teistele arendajatele võimaluse teie pistikprogrammi või teema külge haakida? Sel juhul peaksite kasutama do_actionit ja selles dokumendis varem lingitud leht pakub kõike, mida selle seadistamiseks vajate.

Minu arvates on see tegelikult palju lihtsam kui add_actioniga töötamine, sest add_action võimaldab mitte ainult siduda olemasoleva väljaandjaga, vaid lisada ka oma kohandatud loogika.

do_action seevastu nõuab, et esitaksime käivitatava funktsiooni nime ja seejärel käivitatavale funktsioonile edastatavate argumentide loendi.

See on see?

Umbes nii lihtsalt, kui suudan, jah. Prioriteedi, argumentide arvu ning nimeruumide ja objektorienteeritud programmeerimisega töötamise osas on mõned nüansid. Kuid jällegi, see on väljaspool selle postituse ulatust. Võib-olla käsitlen seda mõnes teises postituses põhjalikumalt.

Praegu, kui te pole aga tuttav järgmiste põhitõdedega:

  • pubi/alammuster,
  • do_action,
  • ja add_action

Olete nüüd piisavalt mugav, et lugeda koodi, millega töötate, mõista, kuidas kood töötab, ja vajadusel isegi oma lahendusi rakendada.

Kirjutan praegu e-raamatut (koos mitme muu esmaklassilise sisuga). Kui olete huvitatud, vaadake, mida saate.

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