{"id":233513,"date":"2023-02-15T20:22:00","date_gmt":"2023-02-15T17:22:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=233513"},"modified":"2022-11-11T00:06:09","modified_gmt":"2022-11-10T21:06:09","slug":"juhend-koik-wordpressi-konksude-kohta","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/et\/juhend-koik-wordpressi-konksude-kohta\/","title":{"rendered":"Juhend: k\u00f5ik WordPressi konksude kohta"},"content":{"rendered":"\n<p>Kas teile on kunagi \u00f6eldud, et teie probleemi lahendus seisneb selles, et peate oma asja tegemiseks millegi k\u00fclge haakima v\u00f5i kasutama <code>add_filter<\/code>, ilma et m\u00f5istaksite, miks see asju segamini ajab? Konksud moodustavad WordPressi aluse ning pakuvad teemasid ja pistikprogramme, kuidas suhelda v\u00f5i kasutada. Selles postituses kirjeldame, mis on konksud, kuidas need t\u00f6\u00f6tavad ja kuidas neid kasutada.<\/p>\n<h2>Mis on konksud?<\/h2>\n<p>Kuna WordPress jookseb oma koodi l\u00e4bi (alates klasside laadimisest, pistikprogrammide laadimisest, teema laadimisest, praeguse p\u00e4ringu p\u00e4ringu tegemisest ja l\u00f5puks HTML-i renderdamisest), jookseb see l\u00e4bi hulga kontrollpunkte; konksud. Konksu avastamisel l\u00f5petab WordPress oma tegevuse \u2013 ja kontrollib, kas sellel konksul on k\u00e4ivitamiseks registreeritud funktsioone (teemas, pistikprogrammis v\u00f5i WordPressis endas). Kui need on olemas, k\u00e4ivitab WordPress k\u00f5ik need funktsioonid ja j\u00e4tkab sealt, kus pooleli j\u00e4i.<\/p>\n<p>See v\u00f5imaldab pistikprogrammidel, teemadel ja WordPressil endal teatud punktide k\u00fclge haakida, et lisada teema <code>&lt;head&gt;<\/code>sildis nt stiililehti, muuta seda, kuidas WordPress postitusi p\u00e4rib, v\u00f5i soovi korral lihtsalt postituse sisu muuta.<\/p>\n<p>Konkse on kahte t\u00fc\u00fcpi; toimingud ja filtrid. Need t\u00f6\u00f6tavad \u00fcksteisega \u00fcsna sarnaselt, kuid \u00fche erandiga, mida me allpool l\u00e4hemalt vaatleme.<\/p>\n<h2>Toimingud ja filtrid<\/h2>\n<p>Toimingu v\u00f5i filtri k\u00fclge haakimiseks peate m\u00e4\u00e4ratlema, millist konksu (nime j\u00e4rgi) soovite kasutada, ja m\u00e4\u00e4ratlema tagasihelistamise \u2013 see on funktsiooni nimi, mida soovite k\u00e4ivitada. Enamikul juhtudel pakuvad konksud parameetreid v\u00f5i muutujaid, mis on konksu jaoks olulised.<\/p>\n<p>Toimingud on WordPressi t\u00e4itmisel lihtsalt &quot;kontrollpunktid&quot;, kus saate \u00fclesande t\u00e4ita v\u00f5i midagi kordada. M\u00f5ningatel harvadel juhtudel saate muuta objekti (esitatud parameetrites), nii et kogu j\u00e4rgnev t\u00e4itmine t\u00f6\u00f6taks selle muudetud objektiga.<\/p>\n<p>Filtrid on m\u00f5eldud muutuja v\u00f5i v\u00e4ljundi muutmiseks. K\u00f5ik filtrikonksud pakuvad muutujat, mida saate esimese parameetrina muuta, ja v\u00f5imaldavad teil seda muuta v\u00f5i tagastada midagi muud.<\/p>\n<p>WordPressil on palju konkse, kuid saate oma pistikprogrammis v\u00f5i teemas luua oma. See v\u00f5imaldab arendajatel teie koodi laiendada ja muuta; N\u00e4iteks pistikprogrammi muutmine teema kaudu v\u00f5i vanemateema muutmine alamteema kaudu.<\/p>\n<p>Paljud WordPressi funktsioonid, mida tavaliselt kasutatakse postituste printimiseks, on samuti filtrid v\u00f5i toimingud. N\u00e4iteks <code>the_title()<\/code>prindib funktsioon v\u00e4lja postituse pealkirja, kuid see on ka filter.<\/p>\n<p>Vaatame, kuidas me neid praktikas rakendame.<\/p>\n<h2>Haakimine tegudele<\/h2>\n<p>Toimingu k\u00fclge haakimiseks kasutate meetodit <code>add_action()<\/code>. See n\u00f5uab v\u00e4hemalt kahte parameetrit; konksu nimi ja tagasihelistamine; selle funktsiooni nimi, mida soovite k\u00e4ivitada. Soovi korral saate m\u00e4\u00e4rata prioriteedi kolmanda parameetrina ja m\u00e4\u00e4rata argumentide arvu, mis edastatakse teie tagasihelistamise funktsioonile. Vaatleme kahte valikulist parameetrit hiljem, kuid praegu on siin n\u00e4ide <code>add_action<\/code>:<\/p>\n<pre><code>add_action('init', 'my_function_name');\nfunction my_function_name() {\n    \/\/ Do your stuff\n}<\/code><\/pre>\n<p>Esimene parameeter <code>add_action<\/code>on toimingu nimi; antud juhul <code>init<\/code>, mis on \u00fcsna tavaline WordPressi konks, mis juhtub l\u00e4htestamise ajal. Teine parameeter on teie tagasihelistamine, antud juhul selle funktsiooni nimi, mida soovime k\u00e4ivitada. Seej\u00e4rel pole vaja teha muud, kui m\u00e4\u00e4ratleda selle nimega funktsioon ja lisada sellesse oma kood.<\/p>\n<p>V\u00f5ite kasutada ka anon\u00fc\u00fcmseid funktsioone, kus saate <code>add_action<\/code>funktsiooni nime andmise asemel m\u00e4\u00e4rata funktsiooni sees;<\/p>\n<pre><code>add_action('init', function() {\n    \/\/ Do your stuff\n});<\/code><\/pre>\n<p>Paljud arendajad eelistavad seda meetodit, kuna see hoiab \u00e4ra sama nimega PHP funktsiooni uuesti m\u00e4\u00e4ratlemise riski.<\/p>\n<p>Kui teil on vaja k\u00e4ivitada PHP-klassis m\u00e4\u00e4ratletud funktsioon, peate tagasihelistamise parameetrina esitama massiivi; kus esimene element on klassi objekt ja teine \u200b\u200belement on funktsiooni nimi:<\/p>\n<pre><code>class MyClass {\n    public function __construct() {\n        add_action('init', [$this, 'myFunctionName']);\n    }\n\u00a0\n    public function myFunctionName() {\n        \/\/ Do your stuff\n    }\n}<\/code><\/pre>\n<h2>Filtrite k\u00fclge haakimine<\/h2>\n<p>Filtri k\u00fclge haakimiseks kasutate funktsiooni <code>add_filter()<\/code>. Sarnaselt \u00fclaltoodud toimingutele on esimene parameeter filtri nimi ja teine \u200b\u200bteie tagasihelistamine. Soovi korral saate m\u00e4\u00e4rata prioriteedi kolmanda parameetrina ja argumentide arvu neljanda parameetrina. Siin on n\u00e4ide <code>add_filter<\/code>:<\/p>\n<pre><code>add_filter('the_title', 'my_function_name');\nfunction my_function_name($title) {\n    \/\/ Do your stuff\n    return $title;\n}<\/code><\/pre>\n<p>\u00dclaltoodud n\u00e4ites \u00fchendame filtri <code>the_title<\/code>(mis prindib v\u00e4lja postituse pealkirja) ja k\u00e4sib WordPressil meie funktsiooni k\u00e4ivitada. K\u00f5ik filtrid annavad alati \u00fche argumendi; muutuja, mida muuta. Oma funktsioonis nimetasin seda nii, <code>$title<\/code>nagu tean, et see sisaldab postituse pealkirja. Funktsiooni sees saan seda muuta v\u00f5i muutuja t\u00e4ielikult t\u00fchistada. Oluline on meeles pidada, et filtrites peate <strong>alati tagastama muutuja<\/strong>. Kui te tagasihelistamisfunktsioonis midagi ei tagasta, t\u00fchjeneb muutuja. Kui j\u00e4taksin \u00fclaltoodud n\u00e4ites tagastuslause vahele, ei kajaks \u00fckski postituse pealkiri kunagi kuskil.<\/p>\n<p>Muutuja argument ja millegi tagastamise reegel teie tagasihelistamisfunktsioonis on praktiliselt ainus erinevus filtrite ja toimingute vahel. K\u00f5ik muu t\u00f6\u00f6tab samamoodi. Saate j\u00e4rgida anon\u00fc\u00fcmsete funktsioonide ja klasside n\u00e4iteid, mis on n\u00e4idatud \u00fclaltoodud filtrite toimingute jaoks, samuti valikuliste parameetrite prioriteetsus ja argumentide arv; mida me j\u00e4rgmisena vaatame.<\/p>\n<h2>Prioriteet<\/h2>\n<p>Kolmas (valikuline) parameeter <code>add_action<\/code>ja <code>add_filter<\/code>on t\u00e4isarv, mis m\u00e4\u00e4rab teie tagasihelistamisfunktsiooni prioriteedi. See on kasulik juhtudel, kui on mitu funktsiooni (mitte ilmtingimata teilt teie teemas v\u00f5i pistikprogrammis, pidage meeles, et WordPress ise kasutab oma konkse) ja peate otsustama, millist neist k\u00f5igepealt k\u00e4ivitada.<\/p>\n<p>Kui prioriteeti pole ette n\u00e4htud, on see vaikimisi 10. Mida madalam on prioriteet, seda varem see k\u00e4ivitatakse ja mida k\u00f5rgem prioriteet, seda hiljem see k\u00e4ivitatakse. Te ei saa anda negatiivset prioriteeti.<\/p>\n<p>Kujutage ette mitu tagasihelistamisfunktsiooni, mis on registreeritud aadressile <code>init<\/code>. Kui mitmele tagasihelistamisele ei m\u00e4\u00e4ratud prioriteeti, k\u00e4ivitab WordPress need nende leidmise j\u00e4rjekorras (n\u00e4iteks <code>functions.php<\/code>teie pistikprogrammi koodis).<\/p>\n<pre><code>add_action('init', 'my_function_name');\nadd_action('init', 'my_second_function_name');\nadd_action('init', 'my_third_function_name', 12);\nadd_action('init', 'my_fourth_function_name', 1);<\/code><\/pre>\n<p>See oleks j\u00e4rjekord, milles WordPress k\u00e4ivitab \u00fclaltoodud tagasihelistamised:<\/p>\n<ol>\n<li><code>my_fourth_function_name<\/code>(prioriteet 1)<\/li>\n<li><code>my_function_name<\/code>(prioriteet 10)<\/li>\n<li><code>my_second_function_name<\/code>(prioriteet 10, kuid ilmub koodis hiljem)<\/li>\n<li><code>my_third_function_name<\/code>(prioriteet 12)<\/li>\n<\/ol>\n<h2>Argumentide arv<\/h2>\n<p>Tavaliselt pakuvad konksud t\u00e4iendavaid andmeid, mis on tagasihelistamise funktsioonide jaoks asjakohased ja kasulikud. N\u00e4iteks toiming <code>save_post<\/code>(k\u00e4ivitatakse alati, kui postitust v\u00e4rskendatakse) pakub kaks v\u00f5imalikku argumenti; postituse ID ja postituse objekt. Need on kasulikud toimingute jaoks, mida tavaliselt selle konksu juures vajate (n\u00e4iteks kui soovite salvestada postituse meta, vajate postituse ID-d).<\/p>\n<p>Kui toimingu v\u00f5i filtri jaoks pole esitatud argumentide arvu, on see vaikimisi 1. Seet\u00f5ttu ei pea te defineerima 1, <code>add_filter<\/code>et p\u00e4\u00e4seda juurde muutujale, mille k\u00fclge filter on \u00fchendatud. Toimingud ei saa aga \u00fchtegi argumenti edastada, kuigi argumentide arv on vaikimisi seatud 1-le.<\/p>\n<p>Vaatame n\u00e4idet argumentide arvu m\u00e4\u00e4ratlemisest ja sellest, kuidas me oma tagasihelistamisfunktsioonis neile juurde p\u00e4\u00e4seme:<\/p>\n<pre><code>add_action('save_post', 'my_function_name', 10, 2);\nfunction my_function_name($post_id, $post) {\n    \/\/ Do your stuff\n}<\/code><\/pre>\n<p>\u00dclaltoodud n\u00e4ites k\u00e4sime WordPressil edastada meie tagasihelistamise funktsioonile kaks argumenti. Pidage meeles, et kolmanda parameetrina peame m\u00e4\u00e4ratlema prioriteedi, nii et tavaliselt defineerime vaikev\u00e4\u00e4rtuse, mis on 10. Mis puutub tagasihelistamisfunktsiooni, saame n\u00fc\u00fcd m\u00e4\u00e4ratleda sama arvu argumendid, mida k\u00fcsisime, \u00fclaltoodud n\u00e4ites oli 2.<\/p>\n<p>Kui oleksime \u00fclaltoodud n\u00e4ites seadnud argumentide arvu v\u00e4\u00e4rtusele 1, t\u00e4idetaks meie tagasihelistamisfunktsiooni ainult esimene argument. Teine, <code>$post<\/code>, oleks m\u00e4\u00e4ratlemata.<\/p>\n<h2>Mis siis, kui vajame andmeid, mida konksus ei edastatud?<\/h2>\n<p>See on t\u00e4ielikult konksu loonud arendaja otsustada, milliseid argumente saab edasi anda. See t\u00e4hendab, et te ei saa lihtsalt peale suruda, milliseid argumente soovite v\u00f5i vajate oma <code>add_action<\/code>v\u00f5i <code>add_filter<\/code>. \u00d5nneks on meil enamikul juhtudel alternatiivid vajalike muutujate hankimiseks. Kui otsite toimingut v\u00f5i filtrit, mille puhul teate, et teatud globaalsed muutujad tuleks m\u00e4\u00e4ratleda, p\u00e4\u00e4sete neile globaalsetele muutujatele juurde tagasihelistamisfunktsioonis. Lisaks on WordPressil <a href=\"https:\/\/codex.wordpress.org\/Conditional_Tags\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">terve hulk tingimuslikke silte<\/a>, mida saate oma konksuga funktsioonides kasutada (v\u00e4lja arvatud v\u00e4ga varajased konksud, mis ilmnevad enne, kui WordPress need tingimuslikud sildid defineerib)<\/p>\n<p>Vaatame n\u00e4idet globaalsetele muutujatele juurdep\u00e4\u00e4su kohta. Filter <code>the_title<\/code>pakub postituse ID valikulise argumendina, millele p\u00e4\u00e4seme juurde, kui m\u00e4\u00e4ratleme selle vastuv\u00f5etava argumendina;<\/p>\n<pre><code>add_filter('the_title', 'my_function_name', 10, 2);\nfunction my_function_name($title, $post_id) {\n    if ($post_id == 1) {\n        return 'First post ever!';\n    }\n    return $title;\n}<\/code><\/pre>\n<p>Samas saame sama tulemuse saavutada, kui;<\/p>\n<pre><code>add_filter('the_title', 'my_function_name');\nfunction my_function_name($title) {\n    global $post;\n    if ($post-&gt;ID == 1) {\n        return 'First post ever!';\n    }\n    return $title;\n}<\/code><\/pre>\n<p>Kui teate, et globaalne muutuja on m\u00e4\u00e4ratletud konksu k\u00e4itamise punktiga, saate need oma tagasihelistamise funktsioonis globaalsetena m\u00e4\u00e4ratleda ja sealt andmetele juurde p\u00e4\u00e4seda. N\u00e4iteks <code>global $wp_query<\/code>\u00fclaltoodud n\u00e4ites m\u00e4\u00e4ratlemine annab teile juurdep\u00e4\u00e4su ka t\u00e4ielikule wp_query objektile teie funktsiooni tagasihelistamisel.<\/p>\n<p><a href=\"https:\/\/codex.wordpress.org\/Conditional_Tags\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">WordPressi tingimussildid<\/a> on \u00e4\u00e4rmiselt kasulikud. Need on saadaval, v\u00e4lja arvatud juhul, kui olete konksu otsas, mis tekib WordPressi k\u00e4ivitamisel v\u00e4ga varakult. Tingimuslikud sildid kontrollivad, millisel lehel (mallil) te viibite, kas olete men\u00fc\u00fcs v\u00f5i postitusts\u00fcklis ja palju muud. N\u00e4iteks postitusp\u00e4ringu muutmisel konksu <code>pre_get_posts<\/code>abil on v\u00e4ga kasulik veenduda, et teie kood t\u00f6\u00f6tab ainult teatud juhtudel. N\u00e4iteks;<\/p>\n<pre><code>add_action('pre_get_posts', 'my_function_name');\nfunction my_function_name($query) {\n    if (!is_admin()) {\n        \/\/ Do your stuff\n    }\n}<\/code><\/pre>\n<p>Kuna konks <code>pre_get_posts<\/code>t\u00f6\u00f6tab nii administraatoris kui ka kasutajaliideses, saame kasutada tingimuslikku m\u00e4rgendit tagamaks, et meie kood m\u00f5jutaks ainult kasutajaliidese p\u00e4ringut.<\/p>\n<h2>Oma konksude loomine<\/h2>\n<p>Saate m\u00e4\u00e4rata oma toimingud ja filtrid. Kui olete teema v\u00f5i pistikprogrammi arendaja, soovitame teil seda teha, et teised saaksid teie koodi muuta ilma l\u00e4htekoodi muutmata.<\/p>\n<p>Registreerige toiming rakendusega <code>do_action()<\/code>ja registreerige filter rakendusega <code>apply_filters()<\/code>.<\/p>\n<p>N\u00f5uab <code>do_action()<\/code>v\u00e4hemalt 1 parameetrit; konksu nimi. Pidage meeles, et konksu nimi peab olema kordumatu (\u00e4rge nimetage seda nt <code>init<\/code>, kuna see on WordPressi p\u00f5hikonks). Asetage <code>do_action()<\/code>konks sinna, kuhu soovite, et konks ilmuks. N\u00e4iteks v\u00f5ite asetada konksu oma teemasse <code>header.php<\/code>kohe keha j\u00e4rele, et m\u00e4\u00e4ratleda konks, kuhu arendajad saavad skripte v\u00f5i muud sisu v\u00e4ljastada.<\/p>\n<pre><code>...\n&lt;body&gt;\n    &lt;?php do_action('mytheme_after_body'); ?&gt;<\/code><\/pre>\n<p>P\u00e4rast konksu nime saate lisada nii palju parameetreid, <code>do_action<\/code>kui soovite. P\u00fc\u00fcdke meeles pidada, mida andmearendajad teie konksudesse vajaksid, mis muidu pole kergesti ligip\u00e4\u00e4setavad.<\/p>\n<p>N\u00f5uab <code>apply_filters()<\/code>v\u00e4hemalt 2 parameetrit; konksu nimi ja muutuja, millele te filtri registreerite. N\u00e4iteks v\u00f5ib teie teema m\u00f5ne HTML-klassi \u00fcmber registreerida filtri, et v\u00f5imaldada arendajatel neid muuta v\u00f5i lisada:<\/p>\n<pre><code>&lt;section class=\"&lt;?php echo apply_filters('mytheme_section_classes', 'section default-class'); ?&gt;\"&gt;\n    ...\n&lt;\/section&gt;<\/code><\/pre>\n<p>Nagu toimingute puhul, saate <code>apply_filters<\/code>p\u00e4rast kahte kohustuslikku parameetrit lisada nii palju parameetreid, kui soovite.<\/p>\n<h2>J\u00e4reldus ja kasulikud materjalid<\/h2>\n<p>Sellega loodan, et olete saavutanud kindla arusaama sellest, kuidas WordPress enamikku oma koodist t\u00f6\u00f6tab, kuidas saate koodi muuta ja kuidas saate arendajana lubada ka teistel arendajatel oma koodi muuta.<\/p>\n<ul>\n<li><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/add_action\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">add_action<\/a><\/li>\n<li><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/add_filter\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">add_filter<\/a><\/li>\n<li><a href=\"https:\/\/codex.wordpress.org\/Conditional_Tags\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">WordPressi tingimuslikud sildid<\/a><\/li>\n<li><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/do_action\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">do_action<\/a><\/li>\n<li><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/apply_filters\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">rakenda_filtreid<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/awhitepixel.com\" class=\"external external_icon\">awhitepixel.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Sellest algajatele m\u00f5eldud juhendist \u00f5pime, mis on WordPressi konksud ja filtrid, kuidas need t\u00f6\u00f6tavad ja kuidas neid kasutada.<\/p>\n","protected":false},"author":1,"featured_media":153117,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[718,894,718,833,894,1110,842,833,926,926,842,863,863],"tags":[1165],"class_list":["post-233513","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-arendaja","category-kood","category-juhend-algajatele","category-n-a","category-opetused","category-teemasid","category-wordpress-4","tag-affiai-et"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/233513","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/comments?post=233513"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/233513\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media\/153117"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media?parent=233513"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/categories?post=233513"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/tags?post=233513"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}