WordPress Hooks: Ръководство за начинаещи за добавяне на собствени куки

Приставките са на начин за разширяване на WordPress. Причината, поради която е толкова лесно да накарате WordPress да оферира, е свързана с куки, които са изхвърлени в изходния код.


Искате ли да направите нещо веднага след публикуване на публикация? Искате да промените дължината на откъса? Искате ли да създадете своя собствена статистика за изглед на страница? Намирането на правилната кука е всичко, което трябва да направите.

Но какво да правим същото с плъгини? Куките не са само за използване в WordPress, те по същество са модел на дизайн, който можете да внедрите в собствената си работа.

В тази статия ще ви покажа как можете да създадете свои собствени куки, за да улесните вас или другите да надграждат работата си.

Защо имаме нужда от куки

За да ви покажем колко страхотни могат да бъдат куки, нека разгледаме пример от реалния свят: Разширени персонализирани полета. Този плъгин ви позволява да добавяте гъвкави персонализирани полета за данни към публикации; говорим за Google Maps, числови полета, множество възможности за избор и други.

Всичко това става чрез приятен потребителски интерфейс, всичко, което трябва да направите, е да използвате функции като get_field () или the_field () в предния край. Дотук добре.

Да приемем, че създавате инструмент, който позволява на хората да продават неща, предлагайки поле за цената и едно за валутата. Вътрешно обаче винаги искате да съхранявате цените в долари, независимо в каква валута потребителят избира да показва.

Ако ACF (Advanced Custom Fields) няма куки, това би било трудно да се направи, може да се наложи да използвате механизъм извън ACF, за да запазите това поле. За щастие, ние сме обхванати от ACF / save_post действие. Можете да използвате това действие, за да промените $ _POST данни, преди да бъдат запазени – перфектен момент за конвертиране на цената в долари.

Това е много практичен пример за куки, но има и друга причина: бъдещи доказателства и разширяемост. Куките са нещо като API, те ви дават насока; рамка, така да се каже Ако запазвате важни данни, трябва автоматично да създадете кука, за да могат другите да манипулират данните, ако е необходимо. Ако показвате нещо критично за приложението си, например, използвайте филтър, който позволява използването да определя броя на показаните изображения.

Как куките работят вътрешно

За да създадем свои собствени куки, ще направим точно това, което WordPress прави вътрешно – използваме функциите dogery () и apply_filters (), за да изпълняваме всички закачени функции. Нека се обърнем към изходния код на WordPress, за да видим как работят.

WordPress използва функцията wp_trim_excerpt () вътрешно, за да създаде откъс. В WordPress 4.1 тази функция е дефинирана в wp-include / formatting.php, започвайки от линия 2542. Ако насочите вниманието си към линия 2560, трябва да видите следното:

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

Това означава, че е следното: Изпълнете всяка функция, закачена в куките excerpt_length и върнете крайната стойност. Да речем, че използвате 3 приставки, които променят дължината на откъса, какво се случва тогава? Нека съберем тези функции на едно място и да разгледаме:

add_filter (‘excerpt_length’, ‘plugin_a_excerpt_modify’, 20);
plugin_a_excerpt_modify ($ length) {
връщане $ дължина – 10;
}

add_filter (‘excerpt_length’, ‘plugin_b_excerpt_modify’, 32);
plugin_b_excerpt_modify ($ length) {
връщане 104;
}

add_filter (‘excerpt_length’, ‘plugin_c_excerpt_modify’, 16);
plugin_c_excerpt_modify ($ length) {
връщане 20;
}

В крайна сметка дължината на откъса ще бъде 104 думи. Филтрите се изпълняват в техния приоритетен ред. Затова функцията на плъгин C се изпълнява първо. Ако не беше свързана друга функция, сега дължината ще бъде 20 думи. След това приставката A започва и дължината става 10. Накрая, плъгин B тежи, което прави дължината 104.

dogery () използва точно същия механизъм, изпълнявайки всички функции, свързани с куката, дефинирани като първи параметър.

Обърнете внимание, че този модел е напълно затворен, той не разчита на специални определения. Можете да използвате dogery (‘lol_hook’) навсякъде, където искате, най-лошият сценарий, нито една функция не е обвързана с lol_hook. С други думи, ние вече имаме инфраструктурата, за да създаваме собствени куки!

Създаване на собствени куки

Както споменах по-горе, всичко, което трябва да направим, е да използваме dogery () и / или add_filter и да се уверим, че документирайте го. По този начин кодерите и потребителите всъщност ще знаят, че е там.

Да предположим, че създаваме галерия с най-новите качени изображения, изтеглени направо от базата данни, нещо подобно:

$ args = масив (
‘post_type’ => ‘прикачен файл’,
‘post_status’ => “Всеки”,
‘orderby’ => ‘дата’,
‘поръчка’ => “DESC”,
‘posts_per_page’ => 10,
‘polja’ => “Документи за самоличност”
);
$ images = new WP_Query ($ args);
$ gallery = ‘[‘ .’gallery ids ="’. implode (‘,’, $ images). “"] ”. ‘;
ехо do_shortcode ($ галерия);

В този пример създаваме заявка, като се уверяваме, че извличаме само изображения, подредени по дата и ограничени до 10 резултата. Използвайки параметъра за полета, уверих се, че се връща масив от идентификатори. След това изградих обикновен кратък код на галерия на WordPress от тази информация.

Има два подхода, които можете да предприемете, за да добавите куки тук. Можете да го добавите просто преди дефиницията на масива $ args, като този:

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

В този случай ще трябва да използвате променливата $ posts_per_page в масива. Може би по-добро решение би било да оставим целия масив да бъде променен. Това ще позволи на други плъгини (или вие в бъдеще) да добавите категория, маркер и други ограничения на галериите – ето пълният код:

$ args = масив (
‘post_type’ => ‘прикачен файл’,
‘post_status’ => “Всеки”,
‘orderby’ => ‘дата’,
‘поръчка’ => “DESC”,
‘posts_per_page’ => 10,
‘polja’ => “Документи за самоличност”
);

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

$ images = new WP_Query ($ args);
$ gallery = ‘[‘ .’gallery ids ="’. implode (‘,’, $ images). “"] ”. ‘;
ехо do_shortcode ($ галерия);

Това е всичко, което има за него. Други плъгини вече могат да използват куката my_gallery / query_args, за да променят функционалността на създадените галерии.

Забележка относно именуването: челната черта изобщо не е необходима. Можете да използвате „my_plugin_query_args“ или друг формат, който желаете. Предпочитам челната черта, тъй като тя ясно заявява приставката, създаваща я, и функционалността, която предоставя.

заключение

Куките са изключително мощни и могат да се използват не само за разширяване на WordPress, но и за разширяване на вашите собствени приставки или дори теми. Трябва да внимавате да не прекалявате и да добавяте куки във всяко кътче на вашата кандидатура.

Вместо да добавям кука към поръчката, състоянието на публикацията, post_type и posts_per_page отделно, добавих филтър, който може да променя целия масив наведнъж. Други битове данни може да няма смисъл да добавяте куки, това в крайна сметка зависи от вас.

Успех в създаването на по-модулни и разширяващи се приложения, уведомете ни дали преди сте използвали собствените си куки!

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map