Ne čini li vam se da neki WordPress plugins imaš sreće? WooCommerce, Jednostavno kopiranje datoteka, Gravitacija Obrasci : svaki od ovih dodataka pokreće cijela tvrtka, s desecima proširenja trećih strana i sve više dodanih značajki koje dodaju potencijal dodatka. Tijekom tog vremena većina ostalih dodataka ne uspijeva napredovati.

Kako jedan dodatak može postati osnova uspješnog tehnološkog ekosustava? Puno je odgovora: budite prvi na tržištu, stvorite izvrstan proizvod, budite dobri u marketingu i svemu ostalom. No, danas ćemo se usredotočiti na važan dio tehničkog odgovora, naime: proširivost, kroz WordPress sustav kuka.

Danas ćemo se poslužiti primjerom WordPress plugin za pokrivanje dvije ključne funkcije koje dodaju status proširivosti dodatku, naime: apply_filters() i do_action().

Proširenja: proširenja za dodatke

Stoga je jasno da kada govorimo o "proširenjima", mislimo na dodatke stvorene za druge. Uzmimo primjer: " Traka za WooCommerce ".

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

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

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 „ funkcionira samo s nekoliko gateway plaćanja ”. Zatim, ako stvarno želite Stripe, morat ćete potpuno izmijeniti WooCommerce i vjerojatno završiti kreiranje vlastitog alata pod nazivom StripeCommerce, koji ili postaje konkurent WooCommerce-u ili jednostavno živi na web mjestu jednog od vaših kupaca koji bi mogao priuštiti plaćanje personalizirana pomoć.

Zbrka je razmišljati, ali na svu sreću WooCommerce radi nešto puno bolje. Koriste dvije funkcije: apply_filters () i dogery (). Ove dvije funkcije omogućuju vam stvaranje zagrada na WordPressu, a ovo je općenito osnovni dio WordPress Hooks sustava.

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

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

Pogledajmo primjer kako bismo vidjeli kako rade.

Primjer korištenja WooPress kuka.

Za naš ćemo primjer upotrijebiti dodatak "Citat dana", plus proširenje koje 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.

Izvorni dodatak

Ovaj dodatak koristi API izložen vanjskom bibliotekom citata, a rezultirajući citat pohranjuje 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.

proširenje 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 izvornih citata su promijenjeni i citati se sada ispravno pripisuju Carlu Saganu.

Evo dodatka i proširenja, u akciji:

Navod-in-akcija

Kôd

Da bi se to dogodilo, potrebna su dva koraka:

Izvorni dodatak definira kuke - kuke za radnje i kuke za filtriranje - omogućujući vanjskom kodu da izmijeni ili doda 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 filtre - koji modificiraju izvorni dodatak na potreban način.

Utipkajte kôd u izvornom dodatku

Za nas je najvažniji dio koda ono što radimo nakon što podatke dobijemo iz API-ja. Ti su podaci dostupni u obliku niza s dva elementa: tekst: tekst citata; i autor: osoba koja je rekla citat. Naš će kôd 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); odjek $ qod_text; jeka ' '; odjek $ qod_author; jeka ' '; } // Akcija udica nakon ostatka rezultata! do_action ('bpc_after_get_qod_text'); povratak 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 uporabe " add_action () "A" add_filter () "I obje su funkcije 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 "Volio bih da će Carl Sagan reći », I to dok koristite izvorni dodatak kao osnovu, slično kao roditeljske i podređene teme na WordPressu.

Ovo je takav trik koji je dodatak poput WooCommerce vrlo popularan, omogućavajući vam dodavanje novih značajki.

To je to za ovaj udžbenik. Nadam se da bolje razumijete različite slučajeve upotrebe filtera i WordPressa.