WordPress Hooks: Útmutató a saját kampóinak hozzáadásához

WordPress Hooks: Útmutató a saját kampóinak hozzáadásához

WordPress Hooks: Útmutató a saját kampóinak hozzáadásához
СОДЕРЖАНИЕ
02 июня 2020

Plugins vannak az a WordPress kiterjesztésének módja. Ennek oka, hogy annyira egyszerű, hogy a WordPress az ajánlattételéhez a forráskódon áthaladó horogokkal kapcsolódjon.


Szeretne csinálni valamit, amint egy bejegyzés megjelenik? Szeretné módosítani a részlet hosszát? Saját oldalnézeti statisztikákat szeretne létrehozni? A megfelelő horog megtalálása minden, amit tennie kell.

De mi lenne, ha ugyanezt tennénk a pluginekkel? A horgok nemcsak a WordPress-ben használhatók, hanem alapvetően olyan tervezési minták, amelyek a saját munkájukban megvalósíthatók.

Ebben a cikkben megmutatom, hogyan hozhat létre saját kampókat, hogy megkönnyítse neked vagy másoknak a munkája felépítését..

Miért kell horgokra?

Nézzünk meg egy példát a való világból annak bemutatására, milyen félelmetes horgok lehetnek: Speciális egyéni mezők. Ez a bővítmény lehetővé teszi, hogy rugalmas egyedi adatmezőket adjon hozzá a hozzászólásokhoz; a Google Mapsről, a számmezőkről, a feleletválasztós és még sok másról beszélünk.

Mindez egy szép felhasználói felületen keresztül történik, csak annyit kell tennie, hogy használjon olyan funkciókat, mint a get_field () vagy a_field () a kezelőfelületen. Eddig jó.

Tegyük fel, hogy olyan eszközt épít, amely lehetővé teszi az emberek számára a dolgok eladását, és egy mezőt kínál az árra és egy a valutára. Belső szinten azonban mindig az árakat dollárban szeretné tárolni, függetlenül attól, hogy a felhasználó milyen pénznemben jelenik meg.

Ha az ACF-nél (Advanced Custom Fields) nincs horog, ezt nehéz lenne megtenni, lehet, hogy az ACF-en kívüli mechanizmust kell használnia a mező mentéséhez. Szerencsére az ACF / save_post akció. Ezzel a művelettel módosíthatja a $ _POST adatokat a mentés előtt – ez egy tökéletes alkalom az ár dollárra konvertálásához..

Ez egy nagyon praktikus példa a horgokra, de van egy másik oka: a jövőbeni bizonyítás és kibővíthetőség. A horgok olyanok, mint egy API, iránymutatást adnak; egy úgynevezett keret. Fontos adatok mentésekor automatikusan létre kell hoznia egy horgot, hogy mások szükség szerint manipulálhassák az adatokat. Ha valami kritikus képet mutat az alkalmazásának, például a képeket használjon egy szűrőt, amely lehetővé teszi a megjelenített képek számának meghatározását.

Hogyan működnek a horgok belsőleg?

Saját horog készítéséhez pontosan azt fogjuk tenni, amit a WordPress belsőleg tesz – használjuk a do_action () és az apply_filters () függvényeket az összes összekapcsolt funkció végrehajtásához. Forduljunk a WordPress forráskódjához, hogy megtudjuk, hogyan működnek ezek.

A WordPress a wp_trim_excerpt () függvényt használja belsőleg egy részlet létrehozásához. A WordPress 4.1-ben ezt a funkciót a 2542. sorból kezdve a wp-incl. / Formatting.php tartalmazza. Ha a figyelmet a 2560 sorra fordítja, a következőt kell látnia:

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

Ez azt jelenti: Tegyük fel, hogy 3 plugint használ, amelyek módosítják a részlet hosszát, mi történik akkor? Gyűjtsük össze ezeket a funkciókat egy helyen, és vessünk egy pillantást:

add_filter (‘excerpt_length’, ‘plugin_a_excerpt_modify’, 20);
plugin_a_excerpt_modify ($ hossz) {
visszaküldés hossza – 10;
}

add_filter (‘excerpt_length’, ‘plugin_b_excerpt_modify’, 32);
plugin_b_excerpt_modify ($ hossz) {
visszatérés 104;
}

add_filter (‘excerpt_length’, ‘plugin_c_excerpt_modify’, 16);
plugin_c_excerpt_modify ($ hossz) {
visszatérés 20;
}

Végül a kivonat hossza 104 szó lesz. A szűrőket prioritásuk szerint hajtják végre. Ezért először a C plugin funkcióját hajtják végre. Ha más funkciót nem kapcsolnánk be, akkor a hossza 20 szó lenne. Ezután az A plugin bekapcsol, és a hossza 10-ig válik. Végül a B plugin megmérkezik, így a hossza 104.

A do_action () pontosan ugyanazt a mechanizmust használja, végrehajtva az első paraméterként meghatározott horoghoz kötött összes funkciót.

Vegye figyelembe, hogy ez a minta teljesen zárt, és nem támaszkodik semmilyen speciális meghatározásra. A do_action (‘lol_hook’) bárhol felhasználható, a legrosszabb esetben a lol_hookhoz semmilyen funkció nem kapcsolódik. Más szavakkal, már megvan az az infrastruktúra, hogy saját kampókat hozzunk létre!

Saját horgok készítése

Mint fentebb említettem, csak annyit kell tennünk, hogy használjuk a do_action () és / vagy add_filter fájlokat, és dokumentálja. Így a kódolók és a felhasználók valóban tudják, hogy ott van.

Tegyük fel, hogy létrehozunk egy galériát a legfrissebb feltöltött képekről, amelyeket egyenesen az adatbázisból húzunk, ehhez hasonlóan:

$ args = tömb (
‘post_type’ => „Kötődés”,
‘post_status’ => ‘Bármi’,
‘megrendelés’ => ‘dátum’,
‘rend’ => ‘DESC’,
‘posts_per_page’ => 10,
‘mezők’ => „Azonosítók”
);
$ images = új WP_Query ($ args);
$ gallery = ‘[‘ .’gallery ID ="” implode (‘,’, $ képek). ‘"”. ‘]’;
echo do_shortcode ($ galéria);

Ebben a példában egy lekérdezést hozunk létre, ügyelve arra, hogy csak a dátum szerint rendezett és 10 eredményre korlátozott képeket kapjuk. A mezők paraméter segítségével meggyőződtem arról, hogy egy azonosító tömb kerül vissza. Ezután felépítettem egy rendszeres WordPress galéria rövid kódot ezekből az információkból.

Kétféle megközelítés alkalmazható horgok hozzáadásához. Ezt egyszerűen hozzá lehet adni a $ args tömb meghatározása előtt, például:

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

Ebben az esetben a tömbben a $ posts_per_page változót kell használnia. Talán jobb megoldás az lenne, ha az egész tömb módosítható lenne. Ez lehetővé tenné, hogy más beépülő modulok (vagy Ön, a jövőben) kategóriákat, címkéket és egyéb korlátozásokat adhassanak a galériákhoz – íme a teljes kód:

$ args = tömb (
‘post_type’ => „Kötődés”,
‘post_status’ => ‘Bármi’,
‘megrendelés’ => ‘dátum’,
‘rend’ => ‘DESC’,
‘posts_per_page’ => 10,
‘mezők’ => „Azonosítók”
);

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

$ images = új WP_Query ($ args);
$ gallery = ‘[‘ .’gallery ID ="” implode (‘,’, $ képek). ‘"”. ‘]’;
echo do_shortcode ($ galéria);

Ez minden, amire szükség van. Más plugins most használhatják a my_gallery / query_args kampót a létrehozott galéria funkcionalitásának módosítására.

Megjegyzés az elnevezéshez: az előremenő perjelre egyáltalán nincs szükség. Használhatja a „my_plugin_query_args” vagy bármilyen más formátumot. Inkább az előrejelző perjelzést részesítem előnyben, mivel egyértelműen kimondja az azt létrehozó plugint és az általa biztosított funkciókat.

Következtetés

A horgok rendkívül nagy teljesítményűek, és nemcsak a WordPress kiterjesztésére használhatók, hanem a saját bővítmények vagy akár témák kibővítésére is. Vigyázzon arra, hogy ne kerüljön túl a fedélzetre, és adjon horgokat az alkalmazás minden fúrójához és rekeszéhez.

Ahelyett, hogy horgot adnék a megrendeléshez, a postai állapothoz, a post_típushoz és a posts_per_page-hez, külön szűrőt adtam hozzá, amely a teljes tömböt egyszerre módosíthatja. Előfordulhat, hogy más adatbiteknek nincs értelme horgokat hozzáadni, ez végső soron a rajtad múlik.

Sok szerencsét a modulárisabb és kibővíthető alkalmazások létrehozására, tudassa velünk, ha korábban már valaha jó hordókat használt-e a saját horgaihoz!

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