{"id":233836,"date":"2023-02-24T09:36:00","date_gmt":"2023-02-24T06:36:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=233836"},"modified":"2022-11-11T12:43:08","modified_gmt":"2022-11-11T09:43:08","slug":"laer-dig-hur-man-skriver-menu-walkers-foer-wordpress-menyer","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/sv\/laer-dig-hur-man-skriver-menu-walkers-foer-wordpress-menyer\/","title":{"rendered":"L\u00e4r dig hur man skriver Menu Walkers f\u00f6r WordPress-menyer"},"content":{"rendered":"\n<p>WordPress till\u00e5ter anv\u00e4ndning av s\u00e5 kallade Walker-klasser f\u00f6r att korsa och visa element i en hierarkisk struktur. I det h\u00e4r inl\u00e4gget kommer vi att l\u00e4ra oss om hur man skapar, implementerar och anpassar v\u00e5r egen walker-klass f\u00f6r att anpassa v\u00e5r menyoutput.<\/p>\n<p>Den mest k\u00e4nda anv\u00e4ndningen av anpassning med Walker-klasser i WordPress \u00e4r f\u00f6r menyer, men i verkligheten anv\u00e4nder WordPress Walker-klasser f\u00f6r en hel massa fall, till exempel utmatning av taxonomihierarkier, kommentarshierarkier <code>[wp_list_pages](https:\/\/developer.wordpress.org\/reference\/functions\/wp_list_pages\/)()<\/code>och <code>[wp_list_categories](https:\/\/developer.wordpress.org\/reference\/functions\/wp_list_categories\/)()<\/code>. De ut\u00f6kar alla en allm\u00e4n <code>Walker<\/code>klass. Vi kommer att ut\u00f6ka den <code>Walker_Nav_Menu<\/code>som anv\u00e4nds f\u00f6r menyer i WordPress.<\/p>\n<p>Eftersom vi ut\u00f6kar ytterligare en klass beh\u00f6ver vi bara l\u00e4gga till de funktioner vi vill \u00e5sidos\u00e4tta. Om en funktion inte finns i v\u00e5r klass kommer WordPress att k\u00f6ra funktionen f\u00f6r\u00e4ldraklass (klassen vi ut\u00f6kar) ist\u00e4llet.<\/p>\n<h2>F\u00f6rberedelse<\/h2>\n<p>Du kan l\u00e4gga till din walker-klass i dina plugin-filer, teman <code>function.php<\/code>eller n\u00e5gon PHP-fil som ing\u00e5r <code>functions.php<\/code>i (f\u00f6r renare kod). Du b\u00f6rjar med att definiera din klass med ett namn som du v\u00e4ljer (se till att klassnamnet \u00e4r unikt, och detta inkluderar m\u00f6jliga klassnamn i WordPress-k\u00e4rnan!) som ut\u00f6kar <code>Walker_Nav_Menu<\/code>:<\/p>\n<pre><code>class AWP_Menu_Walker extends Walker_Nav_Menu {\n}<\/code><\/pre>\n<p>F\u00f6r att s\u00e4ga \u00e5t WordPress att anv\u00e4nda v\u00e5r rollator definierar vi detta i v\u00e5ra <code>[wp_nav_menu](https:\/\/developer.wordpress.org\/reference\/functions\/wp_nav_menu\/)()<\/code>samtal. Denna funktion \u00e4r ansvarig f\u00f6r att mata ut en meny och du har f\u00f6rmodligen minst en i ditt tema f\u00f6r huvudmenyn.<\/p>\n<p>I argumentarrayen <code>wp_nav_menu()<\/code>l\u00e4gger du till ett nytt element med nyckeln &quot;walker&quot; och skapar en ny instans av din walker-klass s\u00e5 h\u00e4r:<\/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>Om du uppdaterar din webbplats b\u00f6r du inte se n\u00e5gon f\u00f6r\u00e4ndring. Detta beror p\u00e5 att v\u00e5r klass inte \u00e5sidos\u00e4tter n\u00e5gon av f\u00f6r\u00e4lderns funktioner, och d\u00e4rf\u00f6r k\u00f6r WordPress helt enkelt de vanliga menyrullatorfunktionerna n\u00e4r menyn matas ut, precis som innan vi sa \u00e5t den att anv\u00e4nda v\u00e5r rullator.<\/p>\n<h2>\u00d6versikt \u00f6ver funktioner vi kan \u00e5sidos\u00e4tta i<code>Walker_Nav_Menu<\/code><\/h2>\n<p>F\u00f6ljande \u00e4r funktioner du kan l\u00e4gga till i din anpassade rollatorklass f\u00f6r att \u00e5sidos\u00e4tta funktionerna f\u00f6r f\u00f6r\u00e4ldraklass <code>Walker_Nav_Menu<\/code>:<\/p>\n<p>De f\u00f6rsta fyra \u00e4r funktioner som helt enkelt \u00e4r ansvariga f\u00f6r utmatning, och de kr\u00e4ver alla att du l\u00e4gger till en str\u00e4ng \u2013 den f\u00f6rsta parametervariabeln. Det \u00e4r viktigt att veta att du inte g\u00f6r <code>echo<\/code>n\u00e5gonting h\u00e4r ute, allt ska byggas upp som ett sn\u00f6re.<\/p>\n<h3>start_lvl<\/h3>\n<p>Funktionen <code>start_lvl<\/code>ansvarar f\u00f6r att mata ut HTML-koden f\u00f6r starten av en ny niv\u00e5. Kort sagt b\u00f6r det mata ut start <code>&lt;ul&gt;<\/code>.<\/p>\n<pre><code>function start_lvl(&amp;$output, $depth=0, $args=null) { }<\/code><\/pre>\n<p>Den f\u00f6rsta parametern, <code>$output<\/code>\u2013 skickad genom referens, \u00e4r str\u00e4ngen du ska l\u00e4gga till din utdata till. <code>$depth<\/code>\u00e4r ett heltal som signalerar vilken niv\u00e5 du befinner dig p\u00e5; 0 f\u00f6r toppniv\u00e5, 1 f\u00f6r direkt underordnad av toppniv\u00e5, och s\u00e5 vidare. <code>$args<\/code>\u00e4r ett objekt f\u00f6r alla argument som tillhandah\u00e5lls i <code>wp_nav_menu()<\/code>.<\/p>\n<h3>end_lvl<\/h3>\n<p>Funktionen <code>end_lvl<\/code>ansvarar f\u00f6r att mata ut HTML-koden f\u00f6r slutet av en niv\u00e5. Detta \u00e4r vanligtvis bara avslutningen <code>&lt;\/ul&gt;<\/code>.<\/p>\n<pre><code>function end_lvl(&amp;$output, $depth=0, $args=null) { }<\/code><\/pre>\n<p>Parametrarna \u00e4r exakt samma som <code>start_lvl<\/code>ovan.<\/p>\n<h3>start_el<\/h3>\n<p>Denna funktion \u00e4r ansvarig f\u00f6r att mata ut varje elements HTML. Kort sagt b\u00f6r det mata ut start <code>&lt;li&gt;<\/code>och <code>&lt;a&gt;<\/code>taggen med l\u00e4nktiteln inuti.<\/p>\n<pre><code>function start_el(&amp;$output, $item, $depth=0, $args=null, $id=0) { }<\/code><\/pre>\n<p>Det f\u00f6rsta argumentet, <code>$output<\/code>, \u00e4r som vanligt str\u00e4ngen du ska l\u00e4gga till utdata till. Det andra argumentet, <code>$item<\/code>, \u00e4r menyobjektet \u2013 och det \u00e4r h\u00e4r du kommer att h\u00e4mta de flesta data f\u00f6r att mata ut menyalternativet. Om menyl\u00e4nken \u00e4r ett postmenyobjekt f\u00e5r du postobjektet h\u00e4r. Oavsett menytyp f\u00e5r du \u00e4ven n\u00e5gra ytterligare anv\u00e4ndbara element; som <code>classes<\/code>, <code>url<\/code>, <code>title<\/code>, och <code>description<\/code>.<\/p>\n<p>Det tredje argumentet, <code>$depth<\/code>, \u00e4r ett heltal som talar om vilken niv\u00e5 vi befinner oss p\u00e5. Niv\u00e5 0 \u00e4r toppniv\u00e5, 1 \u00e4r direkt underordnad av toppniv\u00e5, och s\u00e5 vidare. Det fj\u00e4rde argumentet, <code>$args<\/code>, \u00e4r ett objekt f\u00f6r alla argument som tillhandah\u00e5lls till <code>wp_nav_menu()<\/code>. Den femte parametern, <code>$id<\/code>, \u00e4r det aktuella menyalternativets ID.<\/p>\n<h3>end_el<\/h3>\n<p>Funktionen <code>end_el<\/code>\u00e4r ansvarig f\u00f6r att mata ut st\u00e4ngningen av ett element. Vanligtvis skulle det bara mata ut <code>&lt;\/li&gt;<\/code>taggen.<\/p>\n<pre><code>function end_el(&amp;$output, $item, $depth=0, $args=null) { }<\/code><\/pre>\n<p>Argumenten f\u00f6r <code>end_el<\/code>\u00e4r desamma som <code>start_el<\/code>ovan f\u00f6rutom att funktionen inte har den femte parametern <code>$id<\/code>.<\/p>\n<h3>display_element<\/h3>\n<p>Funktionen <code>display_element<\/code>\u00e4r en \u00e4rvd funktion fr\u00e5n den allm\u00e4nna <code>Walker<\/code>klassen, och \u00e4r den funktion som ansvarar f\u00f6r traversering. Detta \u00e4r funktionen som anropar alla ovanst\u00e5ende funktioner i sin tur.<\/p>\n<p>Jag inkluderar detta h\u00e4r eftersom du i vissa fall, till exempel om du vill f\u00f6rhindra att du korsar en hel gren, skulle anv\u00e4nda den h\u00e4r funktionen f\u00f6r det.<\/p>\n<pre><code>function display_element($element, &amp;$children_elements, $max_depth, $depth, $args, &amp;$output) { }<\/code><\/pre>\n<p>Det f\u00f6rsta argumentet, <code>$element<\/code>, \u00e4r menyobjektet &#8211; detta \u00e4r vad som f\u00f6rs vidare som <code>$item<\/code>i ovanst\u00e5ende funktioner. Det andra argumentet, <code>$children_elements<\/code>\u2013 skickat genom referens, inneh\u00e5ller alla underordnade element som denna funktion kommer att passera. <code>$max_depth<\/code>, det tredje argumentet, \u00e4r ett heltal som signalerar hur djupt vi ska korsa, och det fj\u00e4rde argumentet, <code>$depth<\/code>, \u00e4r det djup vi befinner oss p\u00e5 just nu. Det femte argumentet, <code>$args<\/code>, \u00e4r argumenten som skickas till funktionen som anropade walker (f\u00f6r menyer skulle det vara argumenten som tillhandah\u00e5lls till <code>wp_nav_menu()<\/code>), och det sista argumentet, <code>$output<\/code>\u2013 skickat genom referens, \u00e4r utdata som skickas som f\u00f6rsta argument i alla av ovanst\u00e5ende funktioner.<\/p>\n<h2>\u00c4ndring av utdata fr\u00e5n varje element<\/h2>\n<p>I \u00f6versikten ovan b\u00f6r du se att funktionen <code>start_el()<\/code>\u00e4r den som ansvarar f\u00f6r att mata ut HTML f\u00f6r ett enstaka menyelement. L\u00e5t oss b\u00f6rja med att \u00e5sidos\u00e4tta denna funktion i v\u00e5r rollatorklass med ett enkelt exempel.<\/p>\n<h3>Exempel: f\u00f6rhindrar till\u00e4gg av l\u00e4nkar f\u00f6r &#8217;#&#8217; element<\/h3>\n<p>L\u00e5t oss se till att alla &#8217; <code>#<\/code>&#8217; l\u00e4nkar f\u00e5r ett <code>&lt;span&gt;<\/code>element ist\u00e4llet f\u00f6r en l\u00e4nktagg, f\u00f6r att undvika att sidan uppdateras.<\/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>Vi b\u00f6rjar elementet genom att l\u00e4gga till en <code>&lt;li&gt;<\/code>tagg till <code>$output<\/code>. Vi vill se till att WordPresss standardklasser (till exempel &#8217;meny-objekt&#8217;, &#8217;meny-objekt-har-barn&#8217; etc), s\u00e5v\u00e4l som klasser som skrivs in manuellt i menyredigeraren l\u00e4ggs till i v\u00e5rt listelement. Vi limmar klasserna som tillhandah\u00e5lls som en array <code>$item-&gt;classes<\/code>genom att anv\u00e4nda PHP-funktionen som <code>[implode](https:\/\/www.php.net\/manual\/en\/function.implode.php)()<\/code>separerar varje element med ett mellanslag.<\/p>\n<p>P\u00e5 rad #5-9 och #13-17 hanterar vi den villkorade utmatningen av omslagselementet. Vi matar ut en <code>&lt;a&gt;<\/code>tagg, s\u00e5vida inte elementets URL \u00e4r &#8217; <code>#<\/code>&#8217;, i vilket fall vi tillhandah\u00e5ller en <code>&lt;span&gt;<\/code>tagg ist\u00e4llet. P\u00e5 rad #11 matar vi helt enkelt ut l\u00e4nkens text, som finns i <code>$item-&gt;title<\/code>.<\/p>\n<p>Detta \u00e4r allt vi beh\u00f6ver f\u00f6r att se till att alla menyelement som har &#8217; <code>#<\/code>&#8217; som URL inte \u00e4r klickbara!<\/p>\n<p>Om du g\u00f6r detta i ett formaterat tema, kom ih\u00e5g att du kan f\u00f6rlora lite styling om temat har formaterat <code>&lt;a&gt;<\/code>taggen direkt. Du kan l\u00f6sa detta genom att \u00e4ndra stylingen och eventuellt l\u00e4gga till en klass i span-elementet.<\/p>\n<h3>Exempel: visar menyalternativsbeskrivningar<\/h3>\n<p>Som ett exempel \u00e4r en annan sak du kan g\u00f6ra h\u00e4r att skriva ut menybeskrivningen. Detta finns, men \u00e4r inte aktiverat som standard. I WordPress Menu Editor m\u00e5ste du klicka p\u00e5 &quot;Sk\u00e4rmalternativ&quot; uppe till h\u00f6ger och bocka av f\u00f6r att visa &quot;Beskrivning&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=\"L\u00e4r dig hur man skriver Menu Walkers f\u00f6r WordPress-menyer\" ><\/a><\/p>\n<p>Detta g\u00f6r att anv\u00e4ndaren kan ange en beskrivning av varje element. Du kan skriva ut den h\u00e4r beskrivningen i din rollatorklass. L\u00e5t oss s\u00e4ga att du bara vill visa beskrivningar f\u00f6r objekten p\u00e5 h\u00f6gsta niv\u00e5n, eftersom detta \u00e4r en del av ditt temas design. Du kan helt enkelt kontrollera om den <code>$item<\/code>har en beskrivning och om den <code>$depth<\/code>\u00e4r 0, s\u00e5 h\u00e4r:<\/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>Exempel: L\u00e4gga till rullgardinsmenyer<\/h3>\n<p>Ett mer vanligt och anv\u00e4ndbart exempel \u00e4r att l\u00e4gga till en &quot;caret&quot;, en ikon som signalerar att detta menyalternativ har en rullgardinsmeny (har underordnade element).<\/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=\"L\u00e4r dig hur man skriver Menu Walkers f\u00f6r WordPress-menyer\" ><\/a><\/p>\n<p>Exempel p\u00e5 karets i aktion &#8211; bakom &quot;Blogg&quot; och &quot;Nyheter&quot;<\/p>\n<p>Du m\u00e5ste ta reda p\u00e5 din caret HTML-utdata. I mitt fall matar jag ut ett <code>&lt;i&gt;<\/code>objekt med specifika klasser f\u00f6r en fin ned\u00e5tpil som \u00e4r tillg\u00e4nglig i <a href=\"https:\/\/fontawesome.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Fontawesome-<\/a> biblioteket som tillhandah\u00e5ller tusentals ikoner. Du vill ocks\u00e5 se till att denna caret endast utg\u00e5r p\u00e5 element som har barn. Det b\u00e4sta s\u00e4ttet jag har hittat f\u00f6r att ta reda p\u00e5 om det aktuella elementet har barn, \u00e4r genom att referera till walker-objektet (ja, vilket \u00e4r v\u00e5r rollator sj\u00e4lv, men \u00e4ven klasserna den str\u00e4cker sig!) i <code>$args<\/code>, och kontrollera boolean <code>has_children<\/code>. Att skriva ut en caret \u00e4r s\u00e5 enkelt som:<\/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>Hela vandrarklassen skulle se ut s\u00e5 h\u00e4r:<\/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>Och det \u00e4r allt du beh\u00f6ver f\u00f6r att s\u00e4kerst\u00e4lla att din meny f\u00e5r snygga radsymboler p\u00e5 \u00f6verordnade element och att &#8217; <code>#<\/code>&#8217; l\u00e4nkar inte kommer att vara klickbara.<\/p>\n<p>Om du vill att f\u00e4ltsymbolen ska \u00e4ndras, till exempel till en upp\u00e5tpil n\u00e4r rullgardinsmenyn \u00e4r aktiv, m\u00e5ste du l\u00e4gga till denna med Javascript i ditt tema.<\/p>\n<p>Som exemplen ovan antyder kan du manipulera utdata som du vill, baserat p\u00e5 eventuella villkor. Du kan till exempel modifiera utdata baserat p\u00e5 om en viss klass finns (till exempel en klass som skrivs in manuellt i menyredigeraren) genom att leta efter klassen i <code>$item-&gt;classes<\/code>, eller s\u00e5 kan du manipulera (till exempel anv\u00e4nda versaler) den utmatade objekttexten i <code>$item-&gt;title<\/code>.<\/p>\n<h2>Att ge argument till din rullator genom din<code>wp_nav_menu<\/code><\/h2>\n<p>Jag skulle vilja n\u00e4mna en annan anv\u00e4ndbar sak. Kom ih\u00e5g att $args inneh\u00e5ller alla argument som tillhandah\u00e5lls till <code>wp_nav_menu()<\/code>. Detta inkluderar till exempel <code>theme_location<\/code>och andra, s\u00e5 om du kan \u00e4ndra utdata endast f\u00f6r specifika temaplatser \u2013 till exempel huvudmenyn. Men du kan faktiskt tillhandah\u00e5lla alla anpassade argument!<\/p>\n<p>S\u00e4g att du matar ut samma meny flera g\u00e5nger, till exempel en f\u00f6r dator och igen f\u00f6r mobil. Eller vill du att din rollator bara ska manipulera objekten n\u00e4r de matas ut av <code>wp_nav_menu()<\/code>ditt tema, och inte n\u00e4r menyn l\u00e4ggs till via en widget? Kanske vill du att din rollator ska hantera resultatet annorlunda i dessa fall?<\/p>\n<p>Du kan tillhandah\u00e5lla alla anpassade argument till <code>wp_nav_menu()<\/code>. Som ett enkelt exempel kommer jag att l\u00e4gga till ett booleskt &#8217; <code>show_carets<\/code>&#8217; till argumenten f\u00f6r att s\u00e4kerst\u00e4lla att carets bara l\u00e4ggs till i de fall jag vill ha dem \u2013 ist\u00e4llet f\u00f6r att min walker-klass l\u00e4gger till carets i alla menyer.<\/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>Sedan kan jag helt enkelt \u00e4ndra min kod som l\u00e4ggs till ovan (rad #19-21) till att kontrollera om den <code>show_carets<\/code>\u00e4r n\u00e4rvarande och sann i <code>$args<\/code>, som s\u00e5:<\/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>Du kan l\u00e4gga till alla argument du vill och se till att din rollator bara anpassar de menyer du vill ha. Till exempel enkla booleaner f\u00f6r olika fall, t.ex. <code>is_mobile_menu<\/code>, eller n\u00e5got annat du beh\u00f6ver.<\/p>\n<p>Och det \u00e4r ungef\u00e4r det. Experimentera g\u00e4rna och l\u00e5t mig veta om du har n\u00e5gra fr\u00e5gor eller f\u00f6rslag nedan!<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Inspelningsk\u00e4lla:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/awhitepixel.com\" class=\"external external_icon\">awhitepixel.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>I det h\u00e4r inl\u00e4gget kommer vi att l\u00e4ra oss om hur man skapar, implementerar och anpassar v\u00e5r egen walker-klass f\u00f6r att anpassa v\u00e5r menyoutput i WordPress.<\/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":[932,901,848,901,922,1110,922,932,848,868,868],"tags":[1173],"class_list":["post-233836","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-aemnen","category-koda","category-handledningar","category-oevrig","category-n-a","category-wordpress-9","tag-affiai-sv"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/233836","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/comments?post=233836"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/233836\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media\/224083"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media?parent=233836"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/categories?post=233836"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/tags?post=233836"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}