{"id":233912,"date":"2023-02-24T09:10:00","date_gmt":"2023-02-24T06:10:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=233912"},"modified":"2022-11-11T13:09:12","modified_gmt":"2022-11-11T10:09:12","slug":"opi-kirjoittamaan-valikkokaevelijoeitae-wordpress-valikoita-varten","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fi\/opi-kirjoittamaan-valikkokaevelijoeitae-wordpress-valikoita-varten\/","title":{"rendered":"Opi kirjoittamaan valikkok\u00e4velij\u00f6it\u00e4 WordPress-valikoita varten"},"content":{"rendered":"\n<p>WordPress mahdollistaa ns. Walker-luokkien k\u00e4yt\u00f6n elementtien l\u00e4pikulkuun ja n\u00e4ytt\u00e4miseen hierarkkisessa rakenteessa. T\u00e4ss\u00e4 viestiss\u00e4 opimme luomaan, toteuttamaan ja mukauttamaan omaa k\u00e4velij\u00e4luokkaamme valikkotulostemme mukauttamiseksi.<\/p>\n<p>WordPressin Walker-luokkien mukauttamisen tunnetuin k\u00e4ytt\u00f6tapa on valikoissa, mutta todellisuudessa WordPress k\u00e4ytt\u00e4\u00e4 Walker-luokkia useissa tapauksissa, esimerkiksi taksonomiahierarkioiden, kommenttihierarkioiden <code>[wp_list_pages](https:\/\/developer.wordpress.org\/reference\/functions\/wp_list_pages\/)()<\/code>ja <code>[wp_list_categories](https:\/\/developer.wordpress.org\/reference\/functions\/wp_list_categories\/)()<\/code>. Ne kaikki laajentavat yleist\u00e4 <code>Walker<\/code>luokkaa. Laajennamme sit\u00e4, <code>Walker_Nav_Menu<\/code>jota k\u00e4ytet\u00e4\u00e4n WordPressin valikoissa.<\/p>\n<p>Koska laajennamme toista luokkaa, meid\u00e4n tarvitsee vain lis\u00e4t\u00e4 ne funktiot, jotka haluamme ohittaa. Jos luokassamme ei ole funktiota, WordPress suorittaa sen sijaan p\u00e4\u00e4luokan (laajennamme luokan) -funktion.<\/p>\n<h2>Valmistautuminen<\/h2>\n<p>Voit lis\u00e4t\u00e4 Walker-luokkasi liit\u00e4nn\u00e4istiedostoihisi, teemoihisi <code>function.php<\/code>tai mihin tahansa PHP-tiedostoon, jonka mukana on <code>functions.php<\/code>(puhtaampaa koodia). Aloitat m\u00e4\u00e4ritt\u00e4m\u00e4ll\u00e4 luokkasi valitsemallasi nimell\u00e4 (varmista, ett\u00e4 luokan nimi on yksil\u00f6llinen, ja t\u00e4m\u00e4 sis\u00e4lt\u00e4\u00e4 mahdolliset luokkanimet WordPress-ytimess\u00e4!) laajentamalla <code>Walker_Nav_Menu<\/code>:<\/p>\n<pre><code>class AWP_Menu_Walker extends Walker_Nav_Menu {\n}<\/code><\/pre>\n<p><code>[wp_nav_menu](https:\/\/developer.wordpress.org\/reference\/functions\/wp_nav_menu\/)()<\/code>M\u00e4\u00e4rit\u00e4mme t\u00e4m\u00e4n puheluissamme, jotta voimme k\u00e4ske\u00e4 WordPressin k\u00e4ytt\u00e4m\u00e4\u00e4n k\u00e4velij\u00e4mme. T\u00e4m\u00e4 toiminto vastaa valikon tulostamisesta, ja sinulla on luultavasti ainakin yksi teemasi p\u00e4\u00e4valikossa.<\/p>\n<p>Argumenttitaulukkoon <code>wp_nav_menu()<\/code>lis\u00e4\u00e4t uuden elementin avaimella &quot;walker&quot; ja luo uuden esiintym\u00e4n Walker-luokastasi seuraavasti:<\/p>\n<pre><code>wp_nav_menu([\n    'theme_location' =&gt; 'primary',\n    'menu_class' =&gt; 'main-menu',\n    'container' =&gt; 'nav',\n    'container_class' =&gt; 'header__main-nav',\n    'walker' =&gt; new AWP_Menu_Walker()\n]);<\/code><\/pre>\n<p>Jos p\u00e4ivit\u00e4t sivustosi, sinun ei pit\u00e4isi n\u00e4hd\u00e4 muutosta. T\u00e4m\u00e4 johtuu siit\u00e4, ett\u00e4 luokkamme ei ohita mit\u00e4\u00e4n yl\u00e4tason toimintoja, ja n\u00e4in ollen WordPress yksinkertaisesti ajaa normaaleja valikkok\u00e4velytoimintoja valikkoa tulostettaessa, aivan kuten ennen kuin k\u00e4skimme k\u00e4ytt\u00e4\u00e4 k\u00e4velij\u00e4mme.<\/p>\n<h2>Yleiskatsaus toiminnoista, joissa voimme ohittaa<code>Walker_Nav_Menu<\/code><\/h2>\n<p>Seuraavat ovat toimintoja, jotka voit lis\u00e4t\u00e4 mukautettuun k\u00e4velij\u00e4luokkaasi ohittaaksesi vanhemmuuden luokan <code>Walker_Nav_Menu<\/code>toiminnot:<\/p>\n<p>Ensimm\u00e4iset nelj\u00e4 ovat funktioita, jotka ovat yksinkertaisesti vastuussa tulostamisesta, ja ne kaikki edellytt\u00e4v\u00e4t, ett\u00e4 sinun on lis\u00e4tt\u00e4v\u00e4 merkkijono &#8211; ensimm\u00e4inen parametrimuuttuja. On t\u00e4rke\u00e4\u00e4 tiet\u00e4\u00e4, ett\u00e4 t\u00e4\u00e4ll\u00e4 ei ole <code>echo<\/code>mit\u00e4\u00e4n, kaiken oletetaan rakentuvan merkkijonoksi.<\/p>\n<h3>start_lvl<\/h3>\n<p>Toiminto <code>start_lvl<\/code>vastaa HTML:n tulostamisesta uuden tason alkuun. Lyhyesti sanottuna sen pit\u00e4isi tulostaa k\u00e4ynnistys <code>&lt;ul&gt;<\/code>.<\/p>\n<pre><code>function start_lvl(&amp;$output, $depth=0, $args=null) { }<\/code><\/pre>\n<p>Ensimm\u00e4inen parametri, <code>$output<\/code>joka v\u00e4litet\u00e4\u00e4n viittauksella, on merkkijono, johon liit\u00e4t tulosteen. <code>$depth<\/code>on kokonaisluku, joka ilmaisee, mill\u00e4 tasolla olet; 0 ylimm\u00e4lle tasolle, 1 ylimm\u00e4n tason suoralle lapselle ja niin edelleen. <code>$args<\/code>on kaikkien kohdassa <code>wp_nav_menu()<\/code>.<\/p>\n<h3>end_lvl<\/h3>\n<p>Funktio <code>end_lvl<\/code>vastaa HTML-koodin tulostamisesta tason loppuun. T\u00e4m\u00e4 on yleens\u00e4 vain p\u00e4\u00e4t\u00f6s <code>&lt;\/ul&gt;<\/code>.<\/p>\n<pre><code>function end_lvl(&amp;$output, $depth=0, $args=null) { }<\/code><\/pre>\n<p>Parametrit ovat t\u00e4sm\u00e4lleen samat kuin <code>start_lvl<\/code>yll\u00e4.<\/p>\n<h3>aloitus_el<\/h3>\n<p>T\u00e4m\u00e4 toiminto vastaa kunkin elementin HTML:n tulostamisesta. Lyhyesti sanottuna sen pit\u00e4isi tulostaa aloitus <code>&lt;li&gt;<\/code>ja <code>&lt;a&gt;<\/code>tagi, jonka sis\u00e4ll\u00e4 on linkin otsikko.<\/p>\n<pre><code>function start_el(&amp;$output, $item, $depth=0, $args=null, $id=0) { }<\/code><\/pre>\n<p>Ensimm\u00e4inen argumentti, <code>$output<\/code>on tavalliseen tapaan merkkijono, johon liit\u00e4t tulosteen. Toinen argumentti, <code>$item<\/code>, on valikkokohteen objekti \u2013 ja t\u00e4st\u00e4 haet suurimman osan tiedoista valikkokohdan tulostamista varten. Jos valikkolinkki on postausvalikon kohta, saat post-objektin t\u00e4h\u00e4n. Valikkotyypist\u00e4 riippumatta saat my\u00f6s hy\u00f6dyllisi\u00e4 lis\u00e4elementtej\u00e4; kuten <code>classes<\/code>, <code>url<\/code>, <code>title<\/code>, ja <code>description<\/code>.<\/p>\n<p>Kolmas argumentti, <code>$depth<\/code>on kokonaisluku, joka kertoo mill\u00e4 tasolla olemme. Taso 0 on yl\u00e4taso, 1 on yl\u00e4tason v\u00e4lit\u00f6n lapsi ja niin edelleen. Nelj\u00e4s argumentti, <code>$args<\/code>, on kaikkien osoitteelle annettujen argumenttien kohde <code>wp_nav_menu()<\/code>. Viides parametri, <code>$id<\/code>, on nykyisen valikon kohdan tunnus.<\/p>\n<h3>end_el<\/h3>\n<p>Funktio <code>end_el<\/code>vastaa elementin sulkemisen tulostamisesta. Yleens\u00e4 se vain tulostaa <code>&lt;\/li&gt;<\/code>tunnisteen.<\/p>\n<pre><code>function end_el(&amp;$output, $item, $depth=0, $args=null) { }<\/code><\/pre>\n<p>Argumentit <code>end_el<\/code>ovat samat kuin <code>start_el<\/code>yll\u00e4, paitsi ett\u00e4 funktiolla ei ole viidett\u00e4 parametria, <code>$id<\/code>.<\/p>\n<h3>display_element<\/h3>\n<p>Funktio <code>display_element<\/code>on peritty funktio yleisest\u00e4 <code>Walker<\/code>luokasta ja se on funktio, joka vastaa kulkemisesta. T\u00e4m\u00e4 on toiminto, joka kutsuu vuorotellen kaikkia yll\u00e4 olevia toimintoja.<\/p>\n<p>Lis\u00e4\u00e4n t\u00e4m\u00e4n t\u00e4h\u00e4n, koska joissain tapauksissa, esimerkiksi jos haluat est\u00e4\u00e4 koko haaran l\u00e4pik\u00e4ymisen, k\u00e4yt\u00e4t t\u00e4t\u00e4 toimintoa siihen.<\/p>\n<pre><code>function display_element($element, &amp;$children_elements, $max_depth, $depth, $args, &amp;$output) { }<\/code><\/pre>\n<p>Ensimm\u00e4inen argumentti, <code>$element<\/code>on valikkokohteen objekti \u2013 t\u00e4m\u00e4 v\u00e4litet\u00e4\u00e4n kuten <code>$item<\/code>yll\u00e4 olevissa funktioissa. Toinen argumentti, <code>$children_elements<\/code>joka v\u00e4litet\u00e4\u00e4n viittauksella, sis\u00e4lt\u00e4\u00e4 kaikki alielementit, jotka t\u00e4m\u00e4 funktio kulkee. <code>$max_depth<\/code>, kolmas argumentti, on kokonaisluku, joka ilmaisee, kuinka syv\u00e4lt\u00e4 meid\u00e4n tulisi kulkea, ja nelj\u00e4s argumentti, <code>$depth<\/code>on syvyys, jossa olemme t\u00e4ll\u00e4 hetkell\u00e4. Viides argumentti, <code>$args<\/code>on argumentit, jotka v\u00e4litet\u00e4\u00e4n funktiolle, joka kutsui walkerin (valikoissa se olisi argumentit, jotka annetaan <code>wp_nav_menu()<\/code>) ja viimeinen argumentti, <code>$output<\/code>joka v\u00e4litet\u00e4\u00e4n viittauksella, on tulos, joka v\u00e4litet\u00e4\u00e4n ensimm\u00e4isen\u00e4 argumenttina kaikissa yll\u00e4 olevista toiminnoista.<\/p>\n<h2>Kunkin elementin tulosteen muokkaaminen<\/h2>\n<p>Yll\u00e4 olevassa yleiskatsauksessa sinun pit\u00e4isi n\u00e4hd\u00e4, ett\u00e4 toiminto <code>start_el()<\/code>on vastuussa HTML-koodin tulostamisesta yksitt\u00e4iselle valikkoelementille. Aloitetaan ohittamalla t\u00e4m\u00e4 toiminto Walker-luokassamme yksinkertaisella esimerkill\u00e4.<\/p>\n<h3>Esimerkki: estet\u00e4\u00e4n linkkien lis\u00e4\u00e4minen #-elementteihin<\/h3>\n<p>Varmistetaan, ett\u00e4 kaikki <code>#<\/code>linkit saavat <code>&lt;span&gt;<\/code>elementin linkkitunnisteen sijaan, jotta sivua ei p\u00e4ivitet\u00e4.<\/p>\n<pre><code>class AWP_Menu_Walker extends Walker_Nav_Menu {\n    function start_el(&amp;$output, $item, $depth=0, $args=[], $id=0) {\n        $output .= \"&lt;li class='\". implode(\" \", $item-&gt;classes). \"'&gt;\";\n\u00a0\n        if ($item-&gt;url &amp;&amp; $item-&gt;url != '#') {\n            $output .= '&lt;a href=\"'. $item-&gt;url. '\"&gt;';\n        } else {\n            $output .= '&lt;span&gt;';\n        }\n\u00a0\n        $output .= $item-&gt;title;\n\u00a0\n        if ($item-&gt;url &amp;&amp; $item-&gt;url != '#') {\n            $output .= '&lt;\/a&gt;';\n        } else {\n            $output .= '&lt;\/span&gt;';\n        }\n    }\n}<\/code><\/pre>\n<p>Aloitamme elementin lis\u00e4\u00e4m\u00e4ll\u00e4 <code>&lt;li&gt;<\/code>tunnisteen kohtaan <code>$output<\/code>. Haluamme varmistaa, ett\u00e4 WordPressin oletusluokat (esim. &#8217;menu-item&#8217;, &#8217;menu-item-has-childs&#8217; jne.) sek\u00e4 Menu-editoriin manuaalisesti sy\u00f6tetyt luokat lis\u00e4t\u00e4\u00e4n listaelementtiimme. Liimaamme matriisina toimitetut luokat <code>$item-&gt;classes<\/code>PHP-funktiolla <code>[implode](https:\/\/www.php.net\/manual\/en\/function.implode.php)()<\/code>erottamalla jokainen elementti v\u00e4lily\u00f6nnill\u00e4.<\/p>\n<p>Riveill\u00e4 #5-9 ja #13-17 k\u00e4sittelemme k\u00e4\u00e4rint\u00e4elementin ehdollista tulosta. Annamme <code>&lt;a&gt;<\/code>tunnisteen, ellei elementin URL-osoite ole &quot; <code>#<\/code>&quot;, jolloin annamme sen <code>&lt;span&gt;<\/code>sijaan tagin. Rivill\u00e4 #11 annamme yksinkertaisesti linkin tekstin, joka sijaitsee <code>$item-&gt;title<\/code>.<\/p>\n<p>T\u00e4m\u00e4 on kaikki mit\u00e4 tarvitsemme varmistaaksemme, ett\u00e4 kaikki valikon elementit, joiden <code>#<\/code>URL-osoite on &quot; &quot;, eiv\u00e4t ole napsautettavissa!<\/p>\n<p>Jos teet t\u00e4m\u00e4n tyylitellyss\u00e4 teemassa, muista, ett\u00e4 saatat menett\u00e4\u00e4 osan tyylist\u00e4, jos teema on tyylitt\u00e4nyt <code>&lt;a&gt;<\/code>tunnisteen suoraan. Voit ratkaista t\u00e4m\u00e4n muuttamalla tyyli\u00e4 ja mahdollisesti lis\u00e4\u00e4m\u00e4ll\u00e4 luokan span elementtiin.<\/p>\n<h3>Esimerkki: valikon kohteiden kuvausten n\u00e4ytt\u00e4minen<\/h3>\n<p>Esimerkkin\u00e4 toinen asia, jonka voit tehd\u00e4 t\u00e4ss\u00e4, on valikon kuvauksen tulostaminen. T\u00e4m\u00e4 on olemassa, mutta sit\u00e4 ei ole aktivoitu oletuksena. WordPress Menu -editorissa sinun on napsautettava &quot;N\u00e4ytt\u00f6asetukset&quot; oikeassa yl\u00e4kulmassa ja tarkistettava, n\u00e4kyyk\u00f6 &quot;Kuvaus&quot;:<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-151802-61e4cfd7d3371.png\" data-rel=\"lightbox\" ><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-151802-61e4cfd7d3371.png\" alt=\"Opi kirjoittamaan valikkok\u00e4velij\u00f6it\u00e4 WordPress-valikoita varten\" ><\/a><\/p>\n<p>N\u00e4in k\u00e4ytt\u00e4j\u00e4 voi kirjoittaa kuvauksen jokaiselle elementille. Voit tulostaa t\u00e4m\u00e4n kuvauksen k\u00e4velij\u00e4luokassasi. Oletetaan, ett\u00e4 haluat n\u00e4ytt\u00e4\u00e4 kuvauksen vain ylimm\u00e4n tason kohteille, koska t\u00e4m\u00e4 on osa teemasi suunnittelua. Voit yksinkertaisesti tarkistaa, onko siin\u00e4 <code>$item<\/code>kuvaus ja jos <code>$depth<\/code>se on 0, kuten n\u00e4in:<\/p>\n<pre><code>        ...\n        $output .= $item-&gt;title;\n\u00a0\n        if ($depth == 0 &amp;&amp; !empty($item-&gt;description)) {\n            $output .= '&lt;span class=\"description\"&gt;'. $item-&gt;description. '&lt;\/span&gt;';\n        }\n        ...<\/code><\/pre>\n<h3>Esimerkki: pudotusvalikon merkint\u00f6jen lis\u00e4\u00e4minen<\/h3>\n<p>Yleisempi ja hy\u00f6dyllisempi esimerkki on &quot;caret&quot;-kuvakkeen lis\u00e4\u00e4minen, joka ilmaisee, ett\u00e4 t\u00e4ll\u00e4 valikkokohdalla on pudotusvalikko (sill\u00e4 on alielementtej\u00e4).<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-151802-61e4cfd965e21.png\" data-rel=\"lightbox\" ><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-151802-61e4cfd965e21.png\" alt=\"Opi kirjoittamaan valikkok\u00e4velij\u00f6it\u00e4 WordPress-valikoita varten\" ><\/a><\/p>\n<p>Esimerkki huolenpidosta toiminnassa \u2013 &quot;Blogi&quot; ja &quot;Uutiset&quot; takana<\/p>\n<p>Sinun on selvitett\u00e4v\u00e4 caret HTML -tulostuksesi. Minun tapauksessani tulostan <code>&lt;i&gt;<\/code>kohteen tietyill\u00e4 luokilla mukavan alasnuolen saamiseksi, joka on saatavilla <a href=\"https:\/\/fontawesome.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Fontawesome-<\/a> kirjastossa, joka tarjoaa tuhansia kuvakkeita. Haluat my\u00f6s varmistaa, ett\u00e4 t\u00e4m\u00e4 kuvaruutu tulostaa vain elementtej\u00e4, joissa on lapsia. Paras tapa selvitt\u00e4\u00e4, onko nykyisell\u00e4 elementill\u00e4 lapsia, on viitata k\u00e4velij\u00e4objektiin (kyll\u00e4, joka on itse k\u00e4velij\u00e4mme, mutta my\u00f6s luokkiin, joita se laajentaa!) <code>$args<\/code>ja tarkistamalla boolen <code>has_children<\/code>. Caretin tulostaminen on yht\u00e4 yksinkertaista kuin:<\/p>\n<pre><code>if ($args-&gt;walker-&gt;has_children) {\n    $output .= '&lt;i class=\"caret fa fa-angle-down\"&gt;&lt;\/i&gt;';\n}<\/code><\/pre>\n<p>Koko k\u00e4velij\u00e4luokka n\u00e4ytt\u00e4isi t\u00e4lt\u00e4:<\/p>\n<pre><code>class AWP_Menu_Walker extends Walker_Nav_Menu {\n    function start_el(&amp;$output, $item, $depth=0, $args=[], $id=0) {\n        $output .= \"&lt;li class='\". implode(\" \", $item-&gt;classes). \"'&gt;\";\n\u00a0\n        if ($item-&gt;url &amp;&amp; $item-&gt;url != '#') {\n            $output .= '&lt;a href=\"'. $item-&gt;url. '\"&gt;';\n        } else {\n            $output .= '&lt;span&gt;';\n        }\n\u00a0\n        $output .= $item-&gt;title;\n\u00a0\n        if ($item-&gt;url &amp;&amp; $item-&gt;url != '#') {\n            $output .= '&lt;\/a&gt;';\n        } else {\n            $output .= '&lt;\/span&gt;';\n        }\n\u00a0\n        if ($args-&gt;walker-&gt;has_children) {\n            $output .= '&lt;i class=\"caret fa fa-angle-down\"&gt;&lt;\/i&gt;';\n        }\n    }\n}<\/code><\/pre>\n<p>Ja se on kaikki mit\u00e4 tarvitset varmistaaksesi, ett\u00e4 valikkosi saa mukavat caret-kuvakkeet yl\u00e4tason elementteihin ja ett\u00e4 &quot; <code>#<\/code>&quot; -linkkej\u00e4 ei voi klikata.<\/p>\n<p>Jos haluat, ett\u00e4 caret-kuvake muuttuu esimerkiksi yl\u00e4nuoleksi, kun pudotusvalikko on aktiivinen, sinun on lis\u00e4tt\u00e4v\u00e4 t\u00e4m\u00e4 Javascriptill\u00e4 teemaasi.<\/p>\n<p>Kuten yll\u00e4 olevista esimerkeist\u00e4 k\u00e4y ilmi, voit muokata tulostetta haluamallasi tavalla kaikkien ehtojen perusteella. Voit esimerkiksi muokata tulostetta sen perusteella, onko tietty luokka l\u00e4sn\u00e4 (esimerkiksi luokka, joka on sy\u00f6tetty manuaalisesti Valikkoeditoriin) etsim\u00e4ll\u00e4 luokkaa kohdasta <code>$item-&gt;classes<\/code>, tai voit muokata (esimerkiksi isolla kirjaimilla) tulostettavaa alkion teksti\u00e4, joka on annettu kohdassa <code>$item-&gt;title<\/code>.<\/p>\n<h2>Argumenttien tarjoaminen k\u00e4velij\u00e4llesi<code>wp_nav_menu<\/code><\/h2>\n<p>Haluaisin mainita toisen hy\u00f6dyllisen asian. Muista, ett\u00e4 $args sis\u00e4lt\u00e4\u00e4 kaikki osoitteelle annetut argumentit <code>wp_nav_menu()<\/code>. T\u00e4m\u00e4 sis\u00e4lt\u00e4\u00e4 esimerkiksi <code>theme_location<\/code>ja muut, joten jos voit muokata tulostetta vain tietyille teemapaikoille &#8211; esimerkiksi p\u00e4\u00e4valikkoon. Mutta voit itse asiassa tarjota mit\u00e4 tahansa mukautettuja argumentteja!<\/p>\n<p>Oletetaan, ett\u00e4 tulostat saman valikon useita kertoja, esimerkiksi yhden p\u00f6yt\u00e4koneelle ja uudelleen mobiililaitteelle. Vai haluatko k\u00e4velij\u00e4n manipuloivan kohteita vain silloin, kun ne tulostetaan <code>wp_nav_menu()<\/code>teemassasi, etk\u00e4 silloin, kun valikko lis\u00e4t\u00e4\u00e4n widgetin kautta? Ehk\u00e4 haluat, ett\u00e4 k\u00e4velij\u00e4si k\u00e4sittelee tulosta eri tavalla n\u00e4iss\u00e4 tapauksissa?<\/p>\n<p>Voit antaa mit\u00e4 tahansa mukautettuja argumentteja <code>wp_nav_menu()<\/code>. Yksinkertaisena esimerkkin\u00e4 lis\u00e4\u00e4n <code>show_carets<\/code>argumentteihin boolen &#8217; &#8217;, jotta varmistetaan, ett\u00e4 merkit lis\u00e4t\u00e4\u00e4n vain niiss\u00e4 tapauksissa, joissa haluan niit\u00e4 \u2013 sen sijaan, ett\u00e4 k\u00e4velij\u00e4luokkani lis\u00e4isi merkit kaikkiin valikoihin.<\/p>\n<pre><code>wp_nav_menu([\n    'theme_location' =&gt; 'primary',\n    'menu_class' =&gt; 'main-menu',\n    'container' =&gt; 'nav',\n    'container_class' =&gt; 'header__main-nav',\n    'walker' =&gt; new AWP_Menu_Walker(),\n    'show_carets' =&gt; true\n]);<\/code><\/pre>\n<p>Sitten voin yksinkertaisesti muuttaa yll\u00e4 olevaa caret-lis\u00e4yskoodinpalaa (rivit 19-21) tarkistamaan, onko <code>show_carets<\/code>se l\u00e4sn\u00e4 ja true -koodissa <code>$args<\/code>, kuten n\u00e4in:<\/p>\n<pre><code>if ($args-&gt;show_carets &amp;&amp; $args-&gt;walker-&gt;has_children) {\n    $output .= '&lt;i class=\"caret fa fa-angle-down\"&gt;&lt;\/i&gt;';\n}<\/code><\/pre>\n<p>Voit lis\u00e4t\u00e4 mit\u00e4 tahansa argumentteja varmistaaksesi, ett\u00e4 k\u00e4velij\u00e4 mukauttaa vain haluamasi valikot. Esimerkiksi yksinkertaiset loogiset arvot eri tapauksille, esim <code>is_mobile_menu<\/code>., tai mit\u00e4 tahansa muuta tarvitsemaasi.<\/p>\n<p>Ja siin\u00e4 se. Kokeile rohkeasti ja kerro minulle, jos sinulla on kysytt\u00e4v\u00e4\u00e4 tai ehdotuksia alla!<\/p>\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>T\u00e4ss\u00e4 viestiss\u00e4 opimme luomaan, toteuttamaan ja mukauttamaan omaa Walker-luokkaamme mukauttamaan valikkotulostamme WordPressiss\u00e4.<\/p>\n","protected":false},"author":1,"featured_media":224083,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[927,895,895,917,917,1110,843,927,843,864,864],"tags":[1166],"class_list":{"0":"post-233912","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","6":"hentry","7":"category-aiheita","8":"category-koodi","10":"category-muut","12":"category-n-a","13":"category-opetusohjelmia","16":"category-wordpress-5","18":"tag-affiai-fi"},"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/233912","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/comments?post=233912"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/233912\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media\/224083"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media?parent=233912"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/categories?post=233912"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/tags?post=233912"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}