{"id":233485,"date":"2023-02-15T13:01:00","date_gmt":"2023-02-15T10:01:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=233485"},"modified":"2022-11-10T23:56:33","modified_gmt":"2022-11-10T20:56:33","slug":"kuinka-lisaetae-mukautettuja-asetuksia-olemassa-olevaan-widgetiin-wordpressissae","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fi\/kuinka-lisaetae-mukautettuja-asetuksia-olemassa-olevaan-widgetiin-wordpressissae\/","title":{"rendered":"Kuinka lis\u00e4t\u00e4 mukautettuja asetuksia olemassa olevaan widgetiin WordPressiss\u00e4"},"content":{"rendered":"\n<p>T\u00e4ss\u00e4 viestiss\u00e4 opimme lis\u00e4\u00e4m\u00e4\u00e4n mukautettua HTML-koodia ja asetuksia mihin tahansa WordPressin vakiowidgeteihin tai muihin. N\u00e4iden asetusten avulla opimme erilaisia \u200b\u200btemppuja widgetien toiminnan muokkaamiseen vastaavasti.<\/p>\n<p>Ensimm\u00e4inen osa; mukautettujen asetusten lis\u00e4\u00e4minen ja tallentaminen on melko helppoa. Toinen osa riippuu siit\u00e4, mit\u00e4 haluat tehd\u00e4, ja se riippuu siit\u00e4, mit\u00e4 widgeti\u00e4 k\u00e4sittelet. T\u00e4ss\u00e4 viestiss\u00e4 olen sis\u00e4llytt\u00e4nyt kaksi esimerkki\u00e4; widgetin ohittaminen asetuksesta riippuen (asetusten lis\u00e4\u00e4minen widgetin n\u00e4kyvyyden hallitsemiseksi tietyiss\u00e4 tapauksissa) ja WordPress-navigointiwidgetin valikon argumenttien muokkaaminen. Toisen osan esimerkin pit\u00e4isi antaa sinulle hyv\u00e4 vihje siit\u00e4, kuinka voit k\u00e4sitell\u00e4 sit\u00e4, mit\u00e4 haluat tehd\u00e4.<\/p>\n<h2>Mukautettujen asetusten lis\u00e4\u00e4minen mihin tahansa widgetiin<\/h2>\n<p>Mukautettujen asetusten lis\u00e4\u00e4miseen olemassa oleviin widgeteihin k\u00e4yt\u00e4mme toimintoa nimelt\u00e4 <code>[in_widget_form](https:\/\/developer.wordpress.org\/reference\/hooks\/in_widget_form\/)<\/code>. T\u00e4t\u00e4 toimintoa sovelletaan kaikkien widgetien <code>form()<\/code>toimintoon, joka on toiminto, joka vastaa widgetin j\u00e4rjestelm\u00e4nvalvojan osan hahmontamisesta.<\/p>\n<p>T\u00e4ll\u00e4 suodattimella saamme kolme parametria, mutta olemme todella kiinnostuneita vain ensimm\u00e4isest\u00e4 ja kolmannesta. Ensimm\u00e4inen on widget-instanssi, jota k\u00e4yt\u00e4mme hakemaan kenttien oikeat nimet ja tunnisteet ja (valinnaisesti) tarkistamaan, mink\u00e4laiseen widgetiin olemme koukussa. Kolmas parametri on joukko widgetin tallennettuja asetuksia, joita meid\u00e4n on k\u00e4ytett\u00e4v\u00e4 tarkistaaksemme asetustemme edellisen tallennetun tilan.<\/p>\n<p>Alla oleva koodi lis\u00e4\u00e4 valintaruudun asetuksen nimell\u00e4 &quot; <code>awp-custom-setting<\/code>&quot;. S\u00e4\u00e4d\u00e4 nimi ja HTML haluamasi sy\u00f6tteen mukaan. T\u00e4rkeint\u00e4 on <code>$widget-&gt;get_field_name()<\/code>lis\u00e4t\u00e4 oikeat tunnukset ja <code>name<\/code>attribuutit kaikkiin sy\u00f6tteihisi. Sy\u00f6tt\u00f6idesi arvo tulee t\u00e4ytt\u00e4\u00e4 aiemmin tallennetuilla, ja sen l\u00f6yd\u00e4t parametrista <code>$instance<\/code>. Valintaruuduissa voit k\u00e4ytt\u00e4\u00e4 WordPressin toimintoa <code>[checked](https:\/\/developer.wordpress.org\/reference\/functions\/checked\/)()<\/code>tulostamaan valitun attribuutin.<\/p>\n<pre><code>add_action('in_widget_form', function($widget, $return, $instance) {\n    ?&gt;\n    &lt;p&gt;\n        &lt;input type=\"checkbox\" class=\"checkbox\" name=\"&lt;?php echo $widget-&gt;get_field_name('awp-custom-setting'); ?&gt;\" id=\"&lt;?php echo $widget-&gt;get_field_name('awp-custom-setting'); ?&gt;\" &lt;?php checked(isset($instance['awp-custom-setting'])? $instance['awp-custom-setting']: 0); ?&gt; \/&gt;\n        &lt;label for=\"&lt;?php echo $widget-&gt;get_field_name('awp-custom-setting'); ?&gt;\"&gt;&lt;?php __('Activate something', 'txtdomain'); ?&gt;&lt;\/label&gt;\n    &lt;\/p&gt;\n    &lt;?php\n}, 10, 3);<\/code><\/pre>\n<p>Kun olet lis\u00e4nnyt t\u00e4m\u00e4n teemasi <code>functions.php<\/code>tai laajennuskoodiisi, kaikkien widgetien pit\u00e4isi nyt saada valintaruutu j\u00e4rjestelm\u00e4nvalvojan lomakkeen loppuun.<\/p>\n<h3>Kohdista tiettyihin widgeteihin<\/h3>\n<p>Jos haluat k\u00e4ytt\u00e4\u00e4 asetuksiasi vain yhteen tai joihinkin tiettyihin widgeteihin, voit verrata kohteen <code>id_base<\/code>ominaisuuksia <code>$widget<\/code>. Sinun on tiedett\u00e4v\u00e4 perustunnus \u2013 jos olet ep\u00e4varma, tee vain <code>var_dump($widget-&gt;id_base)<\/code>koukku, tallenna ja tarkista kunkin widgetin tulos j\u00e4rjestelm\u00e4nvalvojassa. Esimerkiksi Navigointi-widgetill\u00e4 on ID-pohja <code>nav_menu<\/code>ja Arkisto-widgetill\u00e4 on <code>archives<\/code>.<\/p>\n<p>Alla olevassa esimerkiss\u00e4 tarkistamme, onko widget Navigointiwidget. Jos n\u00e4in ei ole, toiminto peruutetaan painamalla <code>return<\/code>. Vain navigointiwidgetit saavat mukautetun valintaruudun:<\/p>\n<pre><code>add_action('in_widget_form', function($widget, $return, $instance) {\n    if ($widget-&gt;id_base != 'nav_menu') {\n        return;\n    }\n\u00a0\n    ?&gt;\n    &lt;p&gt;\n    ...<\/code><\/pre>\n<p>Sinun pit\u00e4isi saada asetukset adminissa seuraavasti:<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-153158-61e509045fded.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-153158-61e509045fded.png\" alt=\"Kuinka lis\u00e4t\u00e4 mukautettuja asetuksia olemassa olevaan widgetiin WordPressiss\u00e4\" ><\/a><\/p>\n<p>Asetus on siis lis\u00e4tty, mutta asetuksiasi ei t\u00e4ll\u00e4 hetkell\u00e4 tallenneta. Korjataan se.<\/p>\n<h2>Mukautettujen asetusten tallentaminen<\/h2>\n<p>Meid\u00e4n on kytkeydytt\u00e4v\u00e4 widgetin <code>update()<\/code>toimintoon, jotta voimme p\u00e4ivitt\u00e4\u00e4 mukautettuja asetuksiamme.<\/p>\n<p>T\u00e4t\u00e4 varten k\u00e4yt\u00e4mme suodatinta <code>[widget_update_callback](https:\/\/developer.wordpress.org\/reference\/hooks\/widget_update_callback\/)<\/code>. Asetusten tallentaminen tapahtuu t\u00e4sm\u00e4lleen samalla tavalla kuin kirjoittaisit widget-luokan. Suodatin tarjoaa kolme parametria; ensimm\u00e4inen on ilmentym\u00e4taulukko, joka tallennetaan. Toinen parametri on tila, joka on l\u00e4hetetty widgetin tallennuksen yhteydess\u00e4, ja kolmas on vanha tila. Meid\u00e4n on varmistettava, ett\u00e4 noudetaan uudet arvomme toisesta parametrista ja lis\u00e4t\u00e4\u00e4n ne ensimm\u00e4iseen.<\/p>\n<p>N\u00e4in p\u00e4ivit\u00e4mme valintaruudumme tilan; kuten haluamme tallentaa a <code>true<\/code>tai <code>false<\/code>arvon:<\/p>\n<pre><code>add_filter('widget_update_callback', function($instance, $new_instance, $old_instance) {\n    $instance['awp-custom-setting'] = isset($new_instance['awp-custom-setting']);\n    return $instance;\n}, 10, 3);<\/code><\/pre>\n<p>Muista s\u00e4\u00e4t\u00e4\u00e4 tulojen nimet omien asetusten nimien mukaisiksi. Jos lis\u00e4\u00e4t useita sy\u00f6tteit\u00e4, sinun on toistettava t\u00e4m\u00e4 jokaiselle.<\/p>\n<p>Nyt sinun pit\u00e4isi n\u00e4hd\u00e4, ett\u00e4 mukautetut asetuksesi tallennetaan j\u00e4rjestelm\u00e4nvalvojaan!<\/p>\n<h2>Tallennettujen mukautettujen widget-asetusten k\u00e4ytt\u00e4minen<\/h2>\n<p>Kuten aiemmin mainittiin, t\u00e4m\u00e4 osa riippuu todellakin siit\u00e4, mit\u00e4 haluat asetuksillasi tekev\u00e4n. Valitettavasti se ei ole niin suoraviivaista, koska useimmat widgetit eiv\u00e4t lis\u00e4\u00e4 suodattimia tai koukkuja ulostuloihinsa. Aloitetaan jostain yksinkertaisesta; v\u00e4lt\u00e4 widgetin render\u00f6imist\u00e4 asetuksista riippuen.<\/p>\n<h3>Est\u00e4 hahmontaminen widgetin mukautetusta asetuksesta riippuen<\/h3>\n<p>Oletetaan, ett\u00e4 lis\u00e4\u00e4t asetuksia sille, milloin widgetin pit\u00e4isi olla n\u00e4kyviss\u00e4; esimerkiksi piilottamalla se tiettyihin malleihin (piilota hakutulosmallissa, mutta n\u00e4yt\u00e4 etusivulla ja singless\u00e4) tai reagoida muihin WordPress-tiloihin.<\/p>\n<p>T\u00e4t\u00e4 varten voimme k\u00e4ytt\u00e4\u00e4 suodatinta <code>[widget_display_callback](https:\/\/developer.wordpress.org\/reference\/hooks\/widget_display_callback\/)<\/code>. Meid\u00e4n tarvitsee vain tarkistaa asetuksellemme annettu esiintym\u00e4parametri ja palata, <code>false<\/code>jos emme halua hahmontaa widgeti\u00e4.<\/p>\n<p>T\u00e4m\u00e4 yksinkertainen koodi v\u00e4ltt\u00e4\u00e4 widgetin render\u00f6innin, jos yll\u00e4 lis\u00e4tty mukautettu valintaruutu on valittuna:<\/p>\n<pre><code>add_filter('widget_display_callback', function($instance, $widget, $args) {\n    if ($instance['awp-custom-setting']) {\n        return false;\n    }\n    return $instance;\n}, 10, 3);<\/code><\/pre>\n<p>Haluat todenn\u00e4k\u00f6isesti verrata muita valtioita. T\u00e4m\u00e4 on yksinkertainen esimerkki, jossa valintaruutumme on &quot;Piilota yksitt\u00e4isten viestien n\u00e4kymiss\u00e4&quot; -valintaruutu. Tarkistamme yksinkertaisesti, olemmeko t\u00e4ll\u00e4 hetkell\u00e4 jossakin yksitt\u00e4isess\u00e4 viestin\u00e4kym\u00e4ss\u00e4, <code>[is_singular](https:\/\/developer.wordpress.org\/reference\/functions\/is_singular\/)()<\/code>ja jos valintaruutu on valittuna, palaamme <code>false<\/code>.<\/p>\n<pre><code>add_filter('widget_display_callback', function($instance, $widget, $args) {\n    if (is_singular() &amp;&amp; $instance['awp-custom-setting']) {\n        return false;\n    }\n    return $instance;\n}, 10, 3);<\/code><\/pre>\n<h3>Olemassa olevan widgetin asetusten tai tulosteen muokkaaminen<\/h3>\n<p>Tehokas suodatin, jota voidaan k\u00e4ytt\u00e4\u00e4 leikkimiseen olemassa olevien widgetien kanssa, on <code>[dynamic_sidebar_params](https:\/\/developer.wordpress.org\/reference\/hooks\/dynamic_sidebar_params\/)<\/code>. Katso dokumentaatiosivulta, mit\u00e4 parametreja voit muokata. Voit esimerkiksi lis\u00e4t\u00e4 mukautettuja luokkia, muokata <code>before_widget<\/code>, <code>after_widget<\/code>tai <code>before_title<\/code>ja <code>after_title<\/code>HTML-merkkijonoja. T\u00e4m\u00e4 koskee kuitenkin kaikkia widgetej\u00e4, my\u00f6s j\u00e4rjestelm\u00e4nvalvojaa ja k\u00e4ytt\u00f6liittym\u00e4\u00e4. Ja t\u00e4ll\u00e4 suodattimella sinulla ei ole p\u00e4\u00e4sy\u00e4 widgetin esiintym\u00e4\u00e4n (tallennettuihin asetuksiin) tai widgetin asetuksiin (esim. widgetin tyyppi).<\/p>\n<p>Ilmeisesti meid\u00e4n on ainakin tarkistettava mukautetut asetuksemme. Joten meid\u00e4n on teht\u00e4v\u00e4 melkoisesti koodia saadaksemme tarvitsemamme arvot.<\/p>\n<p>Ensimm\u00e4inen asia, jonka voimme tehd\u00e4, on p\u00e4\u00e4st\u00e4 globaaliin muuttujaan <code>$wp_registered_widgets<\/code>. T\u00e4m\u00e4 on joukko, joka sis\u00e4lt\u00e4\u00e4 kaikki rekister\u00f6idyt k\u00e4ytett\u00e4viss\u00e4 olevat widgetit. T\u00e4m\u00e4n rekisterin avulla voimme k\u00e4ytt\u00e4\u00e4 suodattimen parametria l\u00f6yt\u00e4\u00e4ksemme tietyn widgetin, jossa t\u00e4ll\u00e4 hetkell\u00e4 olemme. Kun olemme l\u00f6yt\u00e4neet nykyisen widgetin, meill\u00e4 on p\u00e4\u00e4sy widgetin parametreihin, kuten <code>id_base<\/code>&#8211; mik\u00e4, kuten n\u00e4imme aiemmin, kertoo meille widgetin tyypin.<\/p>\n<pre><code>add_filter('dynamic_sidebar_params', function($params) {\n    global $wp_registered_widgets;\n\u00a0\n    $this_widget_id = $params[0]['widget_id'];  \/\/ Current widget ID\n    $this_widget = $wp_registered_widgets[$this_widget_id];\n    $widget_object = $this_widget['callback'][0];  \/\/ Current widget object\n\u00a0\n    \/\/ With $widget_object we have access to e.g. id_base for checking type of widget\n    if ($widget_object-&gt;id_base != 'nav_menu') {\n        return $params;\n    }\n\u00a0\n    return $params;\n});<\/code><\/pre>\n<p>Kuten jonosta n\u00e4et, <code>#9<\/code>voimme vihdoin tarkistaa, mink\u00e4 tyyppisess\u00e4 widgetiss\u00e4 olemme t\u00e4ll\u00e4 hetkell\u00e4. Palaan yll\u00e4 olevaan koodiin, jos widgetin tyyppi ei ole Navigointiwidget, koska mukautettu asetuksemme lis\u00e4ttiin vain kyseisille widgeteille.<\/p>\n<h3>Haetaan tallennettuja widget-asetuksia<\/h3>\n<p>Mutta meid\u00e4n on my\u00f6s noudettava tallennetut asetukset widgeti\u00e4 kohden (mukaan lukien mukautettu asetus). Kaikki widgetien tallennetut asetukset tallennetaan asetustietokantaan widgetin tyypin mukaan ryhmiteltyn\u00e4. Widget-rekisterin ominaisuuden avulla voimme <code>[get_option](https:\/\/developer.wordpress.org\/reference\/functions\/get_option\/)()<\/code>hakea nykyisen widget-tyypin tallennetut asetukset. Palautus on indeksoitu taulukko, jossa meid\u00e4n on k\u00e4ytett\u00e4v\u00e4 viel\u00e4 toista suodattimen perometri\u00e4 l\u00f6yt\u00e4\u00e4ksemme nykyisen indeksin (koska voit lis\u00e4t\u00e4 useita samaa widget-tyyppi\u00e4 samaan tai eri sivupalkkiin). Se on helpompi n\u00e4ytt\u00e4\u00e4 koodilla kuin selitt\u00e4\u00e4 se:<\/p>\n<pre><code>    ...\n    if ($widget_object-&gt;id_base != 'nav_menu') {\n        return $params;\n    }\n\u00a0\n    $all_settings = get_option($widget_object-&gt;option_name);\n    $saved_settings = $all_settings[$params[1]['number']];\n    if ($saved_settings['my-custom-thing']) {\n        \/\/ Do your thing\n    }\n\u00a0\n    return $params;\n});<\/code><\/pre>\n<p>Vihdoinkin saamme k\u00e4siin widgetin tallennetut asetukset! Yll\u00e4 olevassa esimerkkikoodissa rivill\u00e4 <code>#9<\/code>, tarkistamme, onko mukautettu valintaruutu valittu vai ei.<\/p>\n<h3>Esimerkkej\u00e4<\/h3>\n<p>T\u00e4ss\u00e4 vaiheessa on sinun itsest\u00e4si kiinni, mit\u00e4 haluat tehd\u00e4. Voit esimerkiksi render\u00f6id\u00e4 tulosteen widgetin otsikon j\u00e4lkeen, mutta ennen widgetin sis\u00e4lt\u00f6\u00e4:<\/p>\n<pre><code>    ...\n    if ($saved_settings['my-custom-thing']) {\n        $params[0]['after_title'] .= '&lt;div&gt;This appears before widget content&lt;\/div&gt;';\n    }\n    ...<\/code><\/pre>\n<p>Todellisemmissa k\u00e4ytt\u00f6tapauksissa ratkaisisit yleens\u00e4 useimmat lis\u00e4\u00e4m\u00e4ll\u00e4 tiettyj\u00e4 suodattimia t\u00e4ss\u00e4 vaiheessa soittamalla <code>add_filter()<\/code>t\u00e4ss\u00e4 vaiheessa.<\/p>\n<p>Alla on esimerkki navigointivalikon argumenttien muokkaamisesta lis\u00e4\u00e4m\u00e4ll\u00e4 suodatin, jos asetuksemme on valittu. Jos sit\u00e4 ei ole valittu, varmistamme, ett\u00e4 suodatin on poistettu. Suodatin navigointivalikon esitt\u00e4misen argumenttien muokkaamiseen on <code>widget_nav_menu_args<\/code>. Alla olevassa koodissa olen m\u00e4\u00e4ritellyt t\u00e4h\u00e4n suodattimeen k\u00e4ytett\u00e4v\u00e4n funktion, joka lis\u00e4\u00e4 uuden argumentin valikon argumentteihin; k\u00e4velij\u00e4:<\/p>\n<pre><code>    ...\n    if ($saved_settings['my-custom-thing']) {\n        add_filter('widget_nav_menu_args', 'awp_add_menu_walker', 10, 3);\n    } else {\n        remove_filter('widget_nav_menu_args', 'awp_add_menu_walker', 10);\n    }\n    return $params;\n});\nfunction awp_add_menu_walker($nav_menu_args, $nav_menu, $args) {\n    $nav_menu_args['walker'] = new AWP_Custom_Walker();\n    return $nav_menu_args;\n}<\/code><\/pre>\n<p>Yll\u00e4 oleva koodi on esimerkki k\u00e4ytt\u00f6tapauksesta, jossa mukautettu valintaruutu m\u00e4\u00e4ritt\u00e4\u00e4, k\u00e4ytet\u00e4\u00e4nk\u00f6 valikkoon valikkok\u00e4vely\u00e4 vai ei. Erinomainen, jos haluat kaikkien valikoiden hahmontuvan normaalisti, mutta haluat, ett\u00e4 tietyt valikkowidgetit hahmontuvat eri tavalla. Se, mit\u00e4 k\u00e4velij\u00e4 tekee valikkotuloksilla, on sinun.<\/p>\n<p>Katso alta t\u00e4ydellinen koodi mukautetun asetuksen lis\u00e4\u00e4miseksi kaikkiin navigointivalikoihin, sen p\u00e4ivitt\u00e4miseen ja valikkok\u00e4velij\u00e4n k\u00e4ytt\u00f6\u00f6n.<\/p>\n<p>Toivottavasti t\u00e4m\u00e4 riitt\u00e4\u00e4 sinulle, jotta voit selvitt\u00e4\u00e4, kuinka koodata mit\u00e4 haluat tehd\u00e4. Se riippuu todella siit\u00e4, mit\u00e4 haluat tehd\u00e4 ja mink\u00e4 tyyppisen widgetin kanssa ty\u00f6skentelet. Kuten edell\u00e4 mainittiin, yleens\u00e4 useimmat muutokset voidaan ratkaista lis\u00e4\u00e4m\u00e4ll\u00e4 suodattimia, jotka tekev\u00e4t asiasi <code>dynamic_sidebar_params<\/code>.<\/p>\n<h2>T\u00e4ysi esimerkki: Mukautettu valintaruutuasetus navigointiwidgeteiss\u00e4 valikkok\u00e4velij\u00e4n k\u00e4ytt\u00f6\u00f6nottamiseksi<\/h2>\n<p>T\u00e4ss\u00e4 on t\u00e4ydellinen koodi mukautetun valintaruudun lis\u00e4\u00e4miseksi kaikkiin WordPressin navigointivalikkowidgetteihin rekister\u00f6ity\u00e4 valikon k\u00e4velij\u00e4\u00e4 varten. (Walker koodi ei sis\u00e4lly)<\/p>\n<pre><code>\/\/ Add custom setting to menu widgets\nadd_action('in_widget_form', function($widget, $return, $instance) {\n    \/\/ Add setting only to menu widgets\n    if ($widget-&gt;id_base != 'nav_menu') {\n        return;\n    }\n\u00a0\n    ?&gt;\n    &lt;p&gt;\n        &lt;input type=\"checkbox\" class=\"checkbox\" name=\"&lt;?php echo $widget-&gt;get_field_name('activate-walker'); ?&gt;\" id=\"&lt;?php echo $widget-&gt;get_field_name('activate-walker'); ?&gt;\" &lt;?php checked(isset($instance['activate-walker'])? $instance['activate-walker']: 0); ?&gt; \/&gt;\n        &lt;label for=\"&lt;?php echo $widget-&gt;get_field_name('activate-walker'); ?&gt;\"&gt;&lt;?php __('Activate walker', 'txtdomain'); ?&gt;&lt;\/label&gt;\n    &lt;\/p&gt;\n    &lt;?php\n}, 10, 3);\n\u00a0\n\u00a0\n\/\/ Update custom setting\nadd_filter('widget_update_callback', function($instance, $new_instance, $old_instance) {\n    $instance['activate-walker'] = isset($new_instance['activate-walker']);\n    return $instance;\n}, 10, 3);\n\u00a0\n\u00a0\n\/\/ Filter sidebar params to add filter if custom setting was activated\nadd_filter('dynamic_sidebar_params', function($params) {\n    global $wp_registered_widgets;\n\u00a0\n    $this_widget_id = $params[0]['widget_id'];\n    $this_widget = $wp_registered_widgets[$this_widget_id];\n    $widget_object = $this_widget['callback'][0];\n\u00a0\n    \/\/ Bail if not a menu widget\n    if ($widget_object-&gt;id_base != 'nav_menu') {\n        return $params;\n    }\n\u00a0\n    $all_settings = get_option($widget_object-&gt;option_name);\n    $saved_settings = $all_settings[$params[1]['number']];\n\u00a0\n    if ($saved_settings['activate-walker']) {\n        add_filter('widget_nav_menu_args', 'awp_add_menu_walker', 10, 3);\n    } else {\n        remove_filter('widget_nav_menu_args', 'awp_add_menu_walker', 10);\n    }\n\u00a0\n    return $params;\n});\n\u00a0\n\u00a0\n\/\/ Filter nav menu arguments to add walker\nfunction awp_add_menu_walker($nav_menu_args, $nav_menu, $args) {\n    $nav_menu_args['walker'] = new AWP_Custom_Walker();\n    return $nav_menu_args;\n}<\/code><\/pre>\n<h2>Johtop\u00e4\u00e4t\u00f6s<\/h2>\n<p>Toivottavasti t\u00e4m\u00e4 viesti on auttanut joko ratkaisemaan tarpeitasi tai antamaan sinulle ohjeita siit\u00e4, miten voit tehd\u00e4 sen, mit\u00e4 sinun on teht\u00e4v\u00e4!<\/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>Kuinka lis\u00e4t\u00e4 mukautettuja asetuksia mihin tahansa WordPressin vakiowidgetiin. N\u00e4iden asetusten avulla opimme muokkaamaan widgetien toimintaa vastaavasti.<\/p>\n","protected":false},"author":1,"featured_media":223663,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[927,895,719,719,895,1110,834,843,803,803,834,927,843,864,864],"tags":[1166],"class_list":{"0":"post-233485","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","6":"hentry","7":"category-aiheita","8":"category-koodi","9":"category-kehittaejae","12":"category-n-a","13":"category-opas-aloittelijoille","14":"category-opetusohjelmia","15":"category-php-5","20":"category-wordpress-5","22":"tag-affiai-fi"},"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/233485","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=233485"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/233485\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media\/223663"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media?parent=233485"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/categories?post=233485"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/tags?post=233485"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}