Háčky WordPress: Průvodce pro začátečníky, jak přidat vlastní háčky

Háčky WordPress: Průvodce pro začátečníky, jak přidat vlastní háčky

Háčky WordPress: Průvodce pro začátečníky, jak přidat vlastní háčky
СОДЕРЖАНИЕ
02 июня 2020

Pluginy jsou způsob, jak rozšířit WordPress. Důvod, proč je tak snadné, aby WordPress udělal vaše nabídky, souvisí s háčky, které jsou posety napříč zdrojovým kódem..


Chcete něco udělat, jakmile bude příspěvek publikován? Chcete upravit délku výpisu? Chcete si vytvořit vlastní statistiky zobrazení stránky? Nalezení správného háčku je vše, co musíte udělat.

Ale co dělat to samé s pluginy? Háčky nejsou určeny pouze pro použití ve WordPressu, jsou to v zásadě návrhový vzor, ​​který můžete implementovat ve své vlastní práci.

V tomto článku vám ukážu, jak si můžete vytvořit vlastní háčky, které vám i ostatním usnadní stavbu vaší práce..

Proč potřebujeme háčky

Abychom vám ukázali, jak úžasné mohou být háčky, podívejme se na příklad ze skutečného světa: Pokročilá vlastní pole. Tento plugin umožňuje přidávat flexibilní příspěvky do datových polí; mluvíme o Mapách Google, číselných polích, výběru z více možností a dalších.

To vše se provádí pomocí pěkného uživatelského rozhraní, vše, co musíte udělat, je použít funkce jako get_field () nebo the_field () na front-endu. Zatím je vše dobré.

Předpokládejme, že stavíte nástroj, který lidem umožňuje prodávat věci, a nabízí pole pro cenu a jedno pro měnu. Interně však vždy chcete ukládat ceny v dolarech, bez ohledu na to, v jaké měně se uživatel rozhodne zobrazovat.

Pokud ACF (Advanced Custom Fields) nemá žádné háčky, bylo by obtížné to provést, budete možná muset použít mechanismus mimo ACF, abyste toto pole uložili. Naštěstí jsme krytí acf / save_post akce. Tuto akci můžete použít k úpravě dat $ _POST před jejich uložením – ideální čas pro převod ceny na dolary.

Jedná se o velmi praktický příklad háčků, ale existuje i další důvod: budoucí ověření a rozšíření. Háčky jsou jako API, dávají vám směr; rámec, abych tak řekl. Pokud ukládáte důležitá data, měli byste automaticky vytvořit háček, aby ostatní mohli data v případě potřeby manipulovat. Pokud zobrazujete něco důležitého pro vaši aplikaci, například obrázky, použijte filtr, který umožňuje použít k definování počtu zobrazených obrázků.

Jak interně fungují háčky

Chcete-li vytvořit vlastní háčky, uděláme přesně to, co WordPress interně dělá – pomocí funkcí do_action () a apply_filters () proveďte všechny připojené funkce. Podívejme se na zdrojový kód WordPress a uvidíme, jak to funguje.

WordPress používá interně funkci wp_trim_excerpt () k vytvoření výpisu. Ve WordPress 4.1 je tato funkce definována v wp-include / formatting.php, počínaje řádkem 2542. Pokud obrátíte svou pozornost na řádek 2560, měli byste vidět následující:

$ excerpt_length = apply_filters (‘excerpt_length’, 55);

To znamená následující: Spusťte každou připojenou funkci do háčků excerpt_length a vraťte konečnou hodnotu. Řekněme, že používáte 3 pluginy, které upravují délku výpisu, co se stane potom? Shromáždíme tyto funkce na jednom místě a podívejme se:

add_filter (‘excerpt_length’, ‘plugin_a_excerpt_modify’, 20);
plugin_a_excerpt_modify ($ length) {
návrat $ délka – 10;
}

add_filter (‘excerpt_length’, ‘plugin_b_excerpt_modify’, 32);
plugin_b_excerpt_modify ($ length) {
návrat 104;
}

add_filter (‘excerpt_length’, ‘plugin_c_excerpt_modify’, 16);
plugin_c_excerpt_modify ($ length) {
návrat 20;
}

Nakonec bude výňatek dlouhý 104 slov. Filtry jsou spouštěny v pořadí podle jejich priority. Proto je funkce pluginu C provedena jako první. Pokud by nebyla připojena žádná jiná funkce, délka by nyní byla 20 slov. Dále se spustí plugin A a jeho délka bude 10. Nakonec se plugin B váží, čímž se prodlouží délka 104.

do_action () používá přesně stejný mechanismus, vykonávající všechny funkce vázané na háček definované jako první parametr.

Tento vzorec je zcela uzavřen, nespoléhá se na žádné speciální definice. Do_action (‘lol_hook’) můžete použít kdekoli se vám líbí, v nejhorším případě nejsou žádné funkce vázány na lol_hook. Jinými slovy, již máme infrastrukturu pro vytváření vlastních háčků!

Vytváření vlastních háčků

Jak jsem již zmínil výše, vše, co musíme udělat, je použít do_action () a / nebo add_filter a dokumentujte to. Tímto způsobem programátoři a uživatelé budou skutečně vědět, že je tam.

Předpokládejme, že vytváříme galerii nejnovějších nahraných obrázků vytažených přímo z databáze, například takto:

$ args = array (
‘post_type’ => ‘příloha’,
‘post_status’ => ‘žádný’,
‘orderby’ => ‘datum’,
‘order’ => ‘DESC’,
‘posts_per_page’ => 10,
‘fields’ => ‘ids’
);
$ images = new WP_Query ($ args);
$ gallery = ‘[‘ .’gallery ids ="’. implode (‘,’, $ images). ‘"’.’] ‘;
echo do_shortcode ($ galerie);

V tomto příkladu vytvoříme dotaz, který zajistí, že načteme pouze obrázky seřazené podle data a omezené na 10 výsledků. Pomocí parametru pole jsem se ujistil, že je vráceno pole id. Z těchto informací jsem poté vytvořil běžný zkratkový kód galerie WordPress.

Pro přidání háčků můžete použít dva přístupy. Dalo by se přidat jednoduše před definicí pole $ args, například:

$ posts_per_page = apply_filters (‘my_gallery / posts_per_page’, 10);

V tomto případě byste museli použít proměnnou $ posts_per_page v poli. Snad lepším řešením by bylo nechat celé pole upravit. To by ostatním pluginům (nebo vám v budoucnu) umožnilo přidat do galerií kategorii, značku a další omezení – zde je plný kód:

$ args = array (
‘post_type’ => ‘příloha’,
‘post_status’ => ‘žádný’,
‘orderby’ => ‘datum’,
‘order’ => ‘DESC’,
‘posts_per_page’ => 10,
‘fields’ => ‘ids’
);

$ args = apply_filters (‘my_gallery / query_args’, $ args);

$ images = new WP_Query ($ args);
$ gallery = ‘[‘ .’gallery ids ="’. implode (‘,’, $ images). ‘"’.’] ‘;
echo do_shortcode ($ galerie);

To je všechno. Ostatní pluginy nyní mohou pomocí háčku my_gallery / query_args změnit funkčnost vytvořených galerií.

Poznámka k pojmenování: lomítko není vůbec nutné. Můžete použít „my_plugin_query_args“ nebo jakýkoli jiný požadovaný formát. Upřednostňuji lomítko, protože jasně uvádí plugin, který jej vytváří, a funkčnost, kterou poskytuje.

Závěr

Háčky jsou mimořádně výkonné a lze je použít nejen k rozšíření WordPress, ale také k rozšíření vlastních pluginů nebo dokonce témat. Měli byste dávat pozor, abyste nepřekonali palubu a nepřidávali háčky do každého koutu vaší aplikace.

Místo přidání háku k objednávce, stavu příspěvku, post_typu a posts_per_page samostatně jsem přidal filtr, který dokáže změnit celé pole najednou. Jiné kousky dat nemusí dávat smysl přidávat háčky, to je nakonec na vás.

Hodně štěstí při vytváření více modulárních a rozšiřitelných aplikací, dejte nám vědět, pokud jste své vlastní háčky už někde v pohodě používali!

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Это интересно
    Adblock
    detector