Ne čini li vam se da neki WordPress plugins imaju sreće? WooCommerce, Easy Digit preuzimanje, Gravity Obrasci : svaki od ovih dodataka pokreće cijela kompanija, s desecima ekstenzija nezavisnih proizvođača i dodavanjem sve više i više funkcija koje dodaju potencijal dodatka. Za to vrijeme većina ostalih dodataka ne uspijeva napredovati.

Kako jedan dodatak može postati osnova naprednog tehnološkog ekosistema? Puno je odgovora: budite prvi na tržištu, stvorite sjajan proizvod, imajte marketinške sposobnosti i sve između toga. Ali danas ćemo se usredotočiti na važan dio tehničkog odgovora, naime: proširivost, kroz WordPress sustav kuka.

Danas ćemo koristiti primjer WordPress dodatak da pokrije dvije ključne funkcije koje dodaju dodatku status proširivosti, naime: apply_filters() i do_action().

Ekstenzije: ekstenzije za dodatke

Stoga je jasno da kada govorimo o "proširenjima", mislimo na dodatke koji su stvoreni za druge. Uzmimo primjer: " Stripe za WooCommerce ".

Ovo proširenje ne radi ništa ako već niste WooCommerce. Ako instalirate WooCommerce, zatim kupite i instalirajte “ Stripe For WooCommerce Kao poseban dodatak, proširit će funkcionalnost WooCommerce-a tako da možete početi prihvaćati plaćanja putem Stripe gatewaya.

Dakle, imate dodatak koji poboljšava drugi dodatak na specifičan način. To je produžetak. To su prilozi iz WordPress ekosistema.

Kako funkcioniraju funkcije: apply_filters () i do_action ()?

Sljedeće pitanje: kako WooCommerce vidi svoju proširenu funkcionalnost? Napokon, lako je zamisliti pisanje dodatka za e-trgovinu koji „ radi samo sa nekim platnima ". Zatim, ako stvarno želite Stripe, morat ćete potpuno izmijeniti WooCommerce i vjerojatno završiti kreiranje vlastitog alata koji se zove StripeCommerce, koji ili postaje konkurent WooCommercea, ili jednostavno živi na web mjestu jednog od vaših kupaca koji bi mogao priuštiti plaćanje personalizovana pomoć.

Zbrka je razmišljati, ali na svu sreću WooCommerce radi nešto puno bolje. Koristi dvije funkcije: apply_filters () i dogery (). Ove dvije funkcije omogućavaju vam kreiranje zagrada na WordPressu, a ovo je temeljni dio WordPress Hooks sistema općenito.

apply_filters () i dogery () Prilično jednostavna razlika:

  • apply_filters () omogućava vam povezivanje filtera na funkcije.
  • dogery () omogućava povezivanje radnji s funkcijama.

Pogledajmo primer da vidimo kako oni rade.

Primjer upotrebe WooPress kuka.

Za naš primjer ćemo upotrijebiti dodatak „Citat dana“, plus dodatak koji modificira ovaj dodatak na određeni način. Da biste pratili i vidjeli puni kod, preuzmite dodatke u obliku ZIP datoteke https://wpshout.com/media/2016/10/plugins.zip.

Originalni dodatak

Ovaj dodatak koristi API izložen vanjskom bibliotekom citata i sprema rezultirajući citat kao WordPress privremene podatke koji se osvježavaju svaka 24 sata. Vratite se ovom članku bilo kad i vidjet ćete slučajni citat od današnjeg dana na temu "život", koji bi trebao biti dovoljno širok.

dodatak dodatka

Kao što znamo, problem većine citata je taj što ih "Carl Sagan" ne izgovara. Naše proširenje ispravlja ovaj problem, koristeći brojne alate:

  • Veliku zaglavlje s današnjim datumom i citatom napisao je Carl Sagan,
  • Neke specifične zamjene riječi da citat pretvorim u ono što je Carl Sagan možda rekao
  • Autori originalnih citata su promijenjeni i citati se sada ispravno pripisuju Carlu Saganu.

Evo dodatka i proširenja, u akciji:

citat-u-akciji

Kod

Da bi se to dogodilo, potrebna su dva koraka:

Originalni dodatak definira kuke - akcijske kuke i kuke za filtriranje - omogućavajući vanjskom kodu da mijenja ili dodaje svoj vlastiti kôd u ključnim točkama. Dodatak za postizanje ovog cilja koristi apply_filters () i do_action ().

Proširenje definira funkcije kuke na radnji i filtere - koji modificiraju izvorni dodatak na potreban način.

Unesite ključ u originalnom dodatku

Za nas je najvažniji dio koda ono što radimo nakon što podatke dobijemo iz API-ja. Ovi podaci su dostupni u obliku niza s dva elementa: tekst: tekst citata; i autor: osoba koja je rekla citat. Naš kod će stoga izgledati ovako:

add_shortcode ('extensible_plugin_demo', 'bpc_output_extensible_plugin'); funkcija bpc_output_extensible_plugin () {ob_start (); // Zakačite prije prikaza! do_action ('bpc_before_get_qod_text'); $ qod_data = bpc_get_qod_data (); if (is_array ($ qod_data)) {echo ' '; $ qod_text = $ qod_data ['tekst']; $ qod_author = $ qod_data ['autor']; // Filtriraj sadržaj! $ qod_text = apply_filters ('bpc_qod_text', $ qod_text); $ qod_author = apply_filters ('bpc_qod_author', $ qod_author); echo $ qod_text; echo ' '; echo $ qod_author; echo ' '; } // Akcija udica nakon ostatka izlaza! do_action ('bpc_after_get_qod_text'); return ob_get_clean (); }

Ključni kod u ekstenziji

Dodatak se ne sastoji od ničega osim radnji i filtara za izmjenu izvornog dodatka. Evo koda za proširenje:

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

Kao što vidite, to su sasvim standardne upotrebe " add_action () »Et« add_filter () "I obje funkcije su zakačene na uglate zagrade koje smo nazvali" bpc_qod_text ".

Krajnji rezultat je da je naš dodatak sada proširiv: drugi programer može gledati kako mijenja dodatak i reći "Želim Carlu Saganu da kaže », I to dok koristite originalni dodatak kao osnovu, pomalo nalik roditeljskim i podređenim temama na WordPressu.

Ovo je takav trik koji je dodatak poput WooCommerce-a vrlo popularan, omogućavajući vam dodavanje novih funkcija.

To je to za ovaj tutorial. Nadam se da bolje razumijete različite slučajeve upotrebe filtera i WordPress akcija.