A nuk ju duket se disa WordPress plugins janë me fat? WooCommerce, Shkarko Easy Digit, Format gravitetit : secila prej këtyre shtojcave mundësohet nga një kompani e tërë, me dhjetra shtesa të palëve të treta dhe gjithnjë e më shumë karakteristika të shtuara prej tyre që shtojnë potencialin e shtojcës. Gjatë kësaj kohe, shumica e shtojcave të tjera nuk arrijnë të përparojnë.

Si mundet që një shtojcë e vetme të bëhet baza e një ekosistemi të lulëzuar të teknologjisë? Ka shumë përgjigje: jini i pari në treg, krijoni një produkt të shkëlqyeshëm, keni mendjemprehtësi të marketingut dhe gjithçka në mes. Por sot do të përqendrohemi në një pjesë të rëndësishme të përgjigjes teknike, përkatësisht: zgjerueshmërinë, përmes sistemit të grepit WordPress.

Sot do të përdorim një shembull të plugin WordPress për të mbuluar dy funksionet kryesore që i japin statusin e zgjerueshmërisë një shtojce, përkatësisht: apply_filters() dhe do_action().

Zgjerime: zgjatje për shtojcat

Prandaj është e qartë se kur flasim për "shtesa", u referohemi shtojcave që janë bërë për të tjerët. Le të marrim një shembull: " Shirit për WooCommerce '.

Kjo shtesë nuk bën asgjë nëse nuk e keni bërë tashmë WooCommerce. Nëse instaloni WooCommerce, pastaj blini dhe instaloni " Shirita Për WooCommerce Si një shtojcë e veçantë, dhe ajo do të zgjerojë funksionalitetin e WooCommerce në mënyrë që të mund të filloni të pranoni pagesa përmes portës së pagesave të Stripe.

Pra, ju keni një shtojcë që përmirëson një shtojcë tjetër në një mënyrë specifike. Shtë një zgjatim. Këto janë ndajfolje nga ekosistemi WordPress.

Si funksionojnë funksionet: apply_filters () dhe do_action ()?

Pyetja tjetër: si e ka parë WooCommerce funksionalitetin e tij të zgjeruar? Mbi të gjitha, është e lehtë të imagjinosh të shkruash një shtojcë eCommerce që “ punon vetëm me disa porta për pagesë ". Atëherë, nëse vërtet dëshironi të Stripe, do të duhet të modifikoni plotësisht WooCommerce, dhe me siguri të përfundoni duke krijuar mjetin tuaj të quajtur StripeCommerce, i cili ose bëhet konkurrent i WooCommerce ose thjesht jeton në faqen e një prej klientëve tuaj që mund të përballonte të paguante ndihmë të personalizuar.

Shtë një rrëmujë për të menduar, por për fat WooCommerce po bën diçka shumë më mirë. Bën një përdorim të dy funksioneve: aplikoni_filtra () dhe do_action (). Këto dy funksione ju lejojnë të krijoni kllapa në WordPress, dhe kjo është një pjesë thelbësore e sistemit WordPress Hooks në përgjithësi.

اعمال_filtra () dhe do_action () Një ndryshim mjaft i thjeshtë:

  • اعمال_filtra () ju lejon të lidhni filtrat me funksionet.
  • do_action () ju lejon të lidhni veprimet me funksionet.

Le të shohim një shembull për të parë se si funksionojnë.

Shembull i përdorimit të grepave WooPress.

Për shembullin tonë, ne do të përdorim një shtesë "Quote of the Day", plus një shtesë që modifikon këtë shtesë në një mënyrë specifike. Për të ndjekur dhe parë kodin e plotë, shkarkoni shtojcat si një skedar ZIP https://wpshout.com/media/2016/10/plugins.zip.

Plugin origjinal

Kjo shtojcë përdor API të ekspozuar nga një bibliotekë e jashtme kuotimesh dhe ruani kuotën që rezulton si të dhëna kalimtare të WordPress që rifreskohen çdo 24 orë. Kthehuni tek ky artikull në çdo kohë dhe do të shihni një citim të rastësishëm nga kjo ditë me temën "jeta", i cili duhet të jetë mjaft i gjerë.

shtesa shtesë

Siç e dimë, problemi me shumicën e citateve është se ato nuk janë thënë nga "Carl Sagan". Shtesa jonë korrigjon këtë problem, duke përdorur një numër mjetesh:

  • Një titull i madh që tregon datën e sotme dhe që citimi është nga Carl Sagan,
  • Disa zëvendësime specifike të fjalëve për të shndërruar një citat në atë që Carl Sagan mund të ketë thënë
  • Autorët e citateve origjinale janë ndryshuar dhe citatet tani i atribuohen saktë Carl Sagan.

Këtu është shtojca dhe shtesa, në veprim:

Citim-në-veprim

Kodi

Në mënyrë që kjo të ndodhë, janë të nevojshme dy hapa:

Shtojca origjinale përcakton grepat - grepa veprimi dhe grepa filtri - duke lejuar që kodi i jashtëm të modifikojë ose shtojë kodin e tij në pikat kyçe. Shtojca përdor apply_filters () dhe do_action () për ta arritur këtë.

Zgjatja përcakton funksionet e fiksimit në veprim dhe filtrat - të cilët modifikojnë shtojcën origjinale në një mënyrë të domosdoshme.

Kodi kyç në shtojcën origjinale

Pjesa më e rëndësishme e kodit për ne është ajo që bëjmë pasi të marrim të dhënat tona nga API. Këto të dhëna janë në dispozicion si një grup me dy elemente: teksti: teksti i citimit; dhe autori: personi që tha citimin. Prandaj, kodi ynë do të duket kështu:

add_shodecode ('extensible_plugin_demo', 'bpc_output_extensible_plugin'); funksioni bpc_output_extensible_plugin () {ob_start (); // Hook para shfaqjes! bëj_veprim ('bpc_before_get_qod_text'); $ qod_data = bpc_get_qod_data (); nëse (is_array ($ qod_data)) {echo ' '; $ qod_text = $ qod_data ['teksti']; $ qod_author = $ qod_data ['autor']; // Filtroni përmbajtjen! $ qod_text = zbato_filtrat ('bpc_qod_text', $ qod_text); $ qod_author = zbato_filtrat ('bpc_qod_author', $ qod_author); jehonë $ qod_text; jehonë ' '; jehonë $ qod_autor; jehonë ' '; } // Goditje veprimi pas pjesës tjetër të daljes! bëj_veprim ('bpc_after_get_qod_text'); kthimi ob_get_clean (); }

Kodi kryesor në shtrirje

Shtojca nuk përbëhet nga asgjë tjetër përveç veprimeve dhe filtrave për të modifikuar shtojcën origjinale. Këtu është kodi për shtesën:

add_filter( 'bpc_qod_text', 'bpc_filter_qod_text' );
// Filter: remplacer des mots spécifique
function bpc_filter_qod_text( $text ) {
    $text = str_replace( 
        array( ' I ', ' me ', ' the ', ' is ', ' am ', ' are ' ),
        array( ' I, a descendent of savannah-dwelling hominids that somehow evolved an astounding capacity for self-reflection, ', ' the cooled-off stellar matter I call "me" ', ' the trillions of atoms that make up the ', ' seems, without the mind-boggling perspective of quantum physics, to be ', ' cannot, due to the Heisenberg Uncertainty Principle, be determined not to be ', ' appear to our best scientific instruments to be ' ),
        $text
    );
    return $text;
}

// Filter: barré le texte qui précède le nom de l'auteur et ajouter Carl Sagan à la suite
add_filter( 'bpc_qod_author', 'wpshout_filter_qod_author' );
function wpshout_filter_qod_author( $text ) {
    $text = '<strike>' . $text . '</strike> Carl Sagan';
    return $text;
}

// Action: Ajouter un titre
add_action( 'bpc_before_get_qod_text', 'bpc_set_up_quote' );
function wpshout_set_up_quote() {
    echo '<h4>Carl Sagan Quote of the Day for ' . date( 'F j, Y') . ':</h4>';
}

// Action: Ajouter une image
add_action( 'bpc_after_get_qod_text', 'bpc_add_carl_boom' );
function bpc_add_carl_boom() {

    echo '<div><img class="aligncenter" src="' . plugin_dir_url( __FILE__ ) . 'carl_sagan_mind_blown.gif"></div>';
}

Siç mund ta shihni, këto janë përdorime mjaft standarde të " add_action () "Dhe" add_filter () "Dhe të dy funksionet janë të lidhura me kllapa katrore të cilat ne i quajtëm" bpc_qod_text ".

Rezultati përfundimtar është se shtojca jonë tani është e shtrirë: një zhvillues i dytë mund të shikojë të modifikojë plugin dhe të thotë "Uroj Carl Sagan për të thënë », Dhe bëjeni ndërsa përdorni shtojcën origjinale si bazë pak si temat e prindërve dhe fëmijëve në WordPress.

Ky është një mashtrim i tillë që e bën një shtojcë si WooCommerce, shumë e njohur, duke ju lejuar të shtoni veçori të reja.

Kjo është ajo për këtë tutorial. Shpresoj të kuptoni më mirë rastet e përdorimit të ndryshëm të filtrave dhe veprimeve të WordPress.