Nezdá se vám, že někteří WordPress pluginy máte štěstí? WooCommerce, Easy Digit Download, gravitační Formuláře : každý z těchto pluginů je poháněn celou společností, s desítkami rozšíření třetích stran a dalšími a dalšími funkcemi, které přidávají k potenciálu pluginu. Během této doby většina ostatních pluginů selže.

Jak se jediný plugin může stát základem prosperujícího technologického ekosystému? Existuje spousta odpovědí: být první na trhu, vytvořit skvělý produkt, důvtipný marketing a vše mezi tím. Ale dnes se zaměříme na důležitou část technické odpovědi, a to: rozšiřitelnost prostřednictvím systému WordPress hook.

Dnes použijeme příklad WordPress Plugin k pokrytí dvou klíčových funkcí, které udělují stav rozšiřitelnosti pluginu, jmenovitě: apply_filters() a do_action().

Rozšíření: rozšíření pro pluginy

Je tedy jasné, že když mluvíme o „rozšířeních“, máme na mysli doplňky, které jsou vytvořeny pro ostatní. Vezměme si příklad: „ Stripe pro WooCommerce ".

Toto rozšíření nedělá nic, pokud jste to ještě neudělali WooCommerce. Pokud nainstalujete WooCommerce, poté zakupte a nainstalujte „ Stripe For WooCommerce Jako samostatný plugin rozšíří funkčnost WooCommerce, takže můžete začít přijímat platby prostřednictvím platební brány Stripe.

Takže máte plugin, který vylepšuje jiný plugin konkrétním způsobem. Je to rozšíření. Toto jsou příslovce z ekosystému WordPress.

Jak fungují funkce: apply_filters () a do_action ()?

Další otázka: Jak WooCommerce vidí svoji rozšířenou funkčnost? Koneckonců, je snadné si představit, že píšete plugin eCommerce, který „ pracuje pouze s některými platebními bránami “. Pak, pokud opravdu chcete Stripe, budete muset úplně upravit WooCommerce a pravděpodobně skončit vytvořením vlastního nástroje s názvem StripeCommerce, který se buď stane konkurentem WooCommerce, nebo prostě žije na místě jednoho z vašich zákazníků, který si mohl dovolit platit osobní pomoc.

Je to nepořádek, ale WooCommerce naštěstí dělá něco mnohem lepšího. Využívá dvě funkce: apply_filters () a do_action (). Tyto dvě funkce vám umožňují vytvářet závorky na WordPress, a to je základní součást systému WordPress Hooks obecně.

apply_filters () a do_action () Docela jednoduchý rozdíl:

  • apply_filters () vám umožňuje připojit filtry k funkcím.
  • do_action () vám umožňuje propojit akce s funkcemi.

Podívejme se na příklad, abychom zjistili, jak fungují.

Příklad použití háčků WooPress.

V našem příkladu budeme používat plugin „Quote of the Day“ plus rozšíření, které tento plugin konkrétním způsobem upraví. Chcete-li sledovat a zobrazit celý kód, stáhněte si doplňky jako soubor ZIP https://wpshout.com/media/2016/10/plugins.zip.

Původní plugin

Tento plugin používá rozhraní API vystavené externí knihovnou nabídek a výslednou nabídku ukládá jako přechodná data WordPress, která se obnovují každých 24 hodin. Vraťte se kdykoli k tomuto článku a uvidíte náhodný citát z tohoto dne na téma „život“, který by měl být dostatečně široký.

rozšíření pluginu

Jak víme, problém většiny citací spočívá v tom, že je neříká „Carl Sagan“. Naše rozšíření tento problém opravuje pomocí řady nástrojů:

  • Velká záhlaví s dnešním datem a citací Carl Sagana,
  • Některé konkrétní náhrady slov, aby se z nabídky stal citát, který mohl Carl Sagan říci
  • Autoři původních nabídek jsou změněny a citace jsou nyní správně připsány Carlu Saganovi.

Zde je plugin a rozšíření v akci:

citace-in-action

Le kód

K tomu je zapotřebí dvou kroků:

Původní plugin definuje háčky - háčky akce a háčky filtru - umožňující externímu kódu upravit nebo přidat vlastní kód v klíčových bodech. Plugin k tomu používá apply_filters () a do_action ().

Rozšíření definuje hook funkce na akci a filtry - které nezbytným způsobem upravují původní plugin.

Kód klíče v původním pluginu

Nejdůležitější částí kódu pro nás je to, co děláme poté, co získáme data z API. Tato data jsou k dispozici jako pole se dvěma prvky: text: text citace; a autor: osoba, která uvedla nabídku. Náš kód bude tedy vypadat takto:

add_shortcode ('extensible_plugin_demo', 'bpc_output_extensible_plugin'); funkce bpc_output_extensible_plugin () {ob_start (); // Před zobrazením zavěste! do_action ('bpc_before_get_qod_text'); $ qod_data = bpc_get_qod_data (); if (is_array ($ qod_data)) {echo ' '; $ qod_text = $ qod_data ['text']; $ qod_author = $ qod_data ['autor']; // Filtrování obsahu! $ qod_text = apply_filters ('bpc_qod_text', $ qod_text); $ qod_author = apply_filters ('bpc_qod_author', $ qod_author); echo $ qod_text; ozvěna ' '; echo $ qod_author; ozvěna ' '; } // Akční hák po zbytek výstupu! do_action ('bpc_after_get_qod_text'); vrátit ob_get_clean (); }

Kód klíče v rozšíření

Plugin nespočívá v ničem jiném než v akcích a filtrech upravujících původní plugin. Zde je kód rozšíření:

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

Jak vidíte, jedná se o zcela standardní použití „ ADD_ACTION () "A" add_filter () "A obě funkce jsou závislé na hranatých závorkách, které jsme nazvali" bpc_qod_text ".

Konečným výsledkem je, že náš plugin je nyní rozšiřitelný: druhý vývojář může sledovat úpravy pluginu a říkat „Přál bych si, aby Carl Sagan řekl », A udělejte to při použití původního pluginu jako základny trochu jako rodičovské a podřízené motivy na WordPressu.

To je takový trik, díky kterému je plugin jako WooCommerce velmi oblíbený a umožňuje vám přidávat nové funkce.

To je pro tento tutoriál. Doufám, že lépe porozumíte různým případům použití filtrů a akcí WordPress.