{"id":233302,"date":"2023-02-11T17:38:00","date_gmt":"2023-02-11T14:38:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=233302"},"modified":"2022-11-10T20:22:41","modified_gmt":"2022-11-10T17:22:41","slug":"wordpress-temahandledning-foer-nyboerjare-del-11-anpassade-sidmallar","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/sv\/wordpress-temahandledning-foer-nyboerjare-del-11-anpassade-sidmallar\/","title":{"rendered":"WordPress-temahandledning f\u00f6r nyb\u00f6rjare \u2013 Del 11: Anpassade sidmallar"},"content":{"rendered":"\n<p>I den h\u00e4r lektionen av WordPress-temahandledning f\u00f6r nyb\u00f6rjare l\u00e4r vi oss om sidmallar, vad de \u00e4r, hur man skapar dem och b\u00e4sta praxis. Vi g\u00f6r en mall i full bredd som ett exempel. L\u00e4ngs v\u00e4gen l\u00e4gger vi ocks\u00e5 till en klass i br\u00f6dtexten genom att fr\u00e5ga om sidan anv\u00e4nder en specifik sidmall.<\/p>\n<h2>Vad \u00e4r sidmallar<\/h2>\n<p>Sidmallar \u00e4r anv\u00e4ndbara f\u00f6r fall d\u00e4r du vill ha en annan layout eller inst\u00e4llning f\u00f6r en specifik sida. Vanliga exempel p\u00e5 anv\u00e4ndning av sidmallar \u00e4r att lista inl\u00e4gg i en anpassad inl\u00e4ggstyp (t.ex. portf\u00f6lj, b\u00f6cker eller tj\u00e4nster), med ett helt annat inneh\u00e5ll eller layout (t.ex. inuti kolumner), eller till och med helt enkelt g\u00f6ra en sida i full bredd (ingen sidof\u00e4lt).<\/p>\n<p>Anv\u00e4ndbarheten av sidmallar har minskat efter WordPress version 5.x (Gutenberg). Den nya Gutenberg-redigeraren m\u00f6jligg\u00f6r stor flexibilitet f\u00f6r att bygga s\u00e5dana sidor utan behov av sidmallar. Oavsett vilket kommer vi att l\u00e4ra oss hur du l\u00e4gger till en anpassad sidmall i v\u00e5rt tema.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-153948-61e516ac9d3c4.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-153948-61e516ac9d3c4.png\" alt=\"WordPress-temahandledning f\u00f6r nyb\u00f6rjare \u2013 Del 11: Anpassade sidmallar\" ><\/a><\/p>\n<p>Inuti metaboxen &quot;Sidattribut&quot; f\u00f6r sidor visas valet av sidmall, men mallalternativet visas bara om det aktiva temat har minst en sidmall.<\/p>\n<p>Sidmallar kan faktiskt ocks\u00e5 anv\u00e4ndas f\u00f6r inl\u00e4gg och anpassade inl\u00e4ggstyper. Efter WordPress 4.7 och upp\u00e5t kan du definiera vilka inl\u00e4ggstyper du vill att mallen ska vara tillg\u00e4nglig f\u00f6r. WordPress kommer automatiskt att l\u00e4gga till den n\u00f6dv\u00e4ndiga metaboxen &quot;Sidattribut&quot; till dessa inl\u00e4ggstyper.<\/p>\n<h2>Namn och placering av sidmall<\/h2>\n<p>Till att b\u00f6rja med skulle du vanligtvis g\u00f6ra en kopia av den mallfil som ligger n\u00e4rmast det du vill uppn\u00e5 med sidmallen. I de flesta fall \u00e4r det <code>page.php<\/code>. N\u00e4r det g\u00e4ller namnet p\u00e5 din sidmall \u00e4r det lite upp till dig. Men det finns vissa regler och lite sunt f\u00f6rnuft.<\/p>\n<p>Det \u00e4r frestande att helt enkelt namnge din sidmall, t.ex. <code>page-books.php<\/code>f\u00f6r en mall som listar b\u00f6cker av anpassad inl\u00e4ggstyp. Prefix aldrig din sidmall med &#8217; <code>page-<\/code>&#8217;! Om du kommer ih\u00e5g fr\u00e5n <a href=\"https:\/\/codex.wordpress.org\/File:Template_Hierarchy.png#file\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">WordPresss malhierarki<\/a>, kommer WordPress att leta efter <code>page-&lt;slug&gt;.php<\/code>innan det f\u00f6rs\u00f6ker <code>page.php<\/code>, och anv\u00e4ndare av ditt tema kan st\u00f6ta p\u00e5 ov\u00e4ntat beteende.<\/p>\n<p>En bra praxis \u00e4r att prefixa din sidmall med n\u00e5got som inte ing\u00e5r i WordPress sidmallsnamn. Till exempel &#8217; <code>pagetemplate-'<\/code>, &#8217; <code>pt-<\/code>&#8217; eller helt enkelt bara det fullst\u00e4ndiga namnet &#8217; <code>fullwidth-template.php<\/code>&#8217;. Det \u00e4r ocks\u00e5 bra att f\u00f6rvara dem i en undermapp; <code>\/page-templates\/<\/code>detta \u00e4r dock inte bra om du vill att ditt tema ska vara tillg\u00e4ngligt f\u00f6r att ut\u00f6kas med ett barntema. Ett underordnat tema kan inte \u00e5sidos\u00e4tta sidmallar som \u00e4r placerade i en undermapp i det \u00f6verordnade temat.<\/p>\n<p>N\u00e4r du har best\u00e4mt dig f\u00f6r ett namngivningsm\u00f6nster, l\u00e5t oss g\u00e5 vidare och skapa en sidmall.<\/p>\n<h2>Skapa en sidmall<\/h2>\n<p>G\u00f6r en kopia av <code>page.php<\/code>och byt namn p\u00e5 den till <code>pagetemplate-fullwidth.php<\/code>. F\u00f6r att g\u00f6ra det till en sidmall beh\u00f6ver du bara l\u00e4gga till en kommentar i b\u00f6rjan som talar om f\u00f6r WordPress att detta \u00e4r en sidmall:<\/p>\n<pre><code>&lt;?php \n\/*\nTemplate Name: Fullwidth \n*\/\nget_header(); ?&gt;\n&lt;?php \nif (have_posts()) {\n...<\/code><\/pre>\n<p>Allt du beh\u00f6ver \u00e4r en kommentar i b\u00f6rjan av filen, med &quot;Mallnamn:&quot; och ditt mallnamn efter. Det \u00e4r allt! G\u00e5 in p\u00e5 admin, redigera en sida och du b\u00f6r se alternativet att v\u00e4lja &quot;Fullbredd&quot; som mall.<\/p>\n<p>Jag n\u00e4mnde att i WordPress 4.7 kan du definiera vilka inl\u00e4ggstyper du vill att sidmallen ska vara tillg\u00e4nglig f\u00f6r. Just nu \u00e4r det bara tillg\u00e4ngligt f\u00f6r sidor, men s\u00e4g att du vill ha m\u00f6jligheten att g\u00f6ra inl\u00e4gg i full bredd ocks\u00e5? L\u00e4gg i s\u00e5 fall till &quot;Mallposttyp:&quot; i samma kommentarsblock och definiera dina inl\u00e4ggstyper separerade med kommatecken. Till exempel f\u00f6r att g\u00f6ra den tillg\u00e4nglig f\u00f6r b\u00e5de inl\u00e4gg och sidor;<\/p>\n<pre><code>&lt;?php \n\/*\nTemplate Name: Fullwidth \nTemplate Post Type: post, page\n*\/\nget_header(); ?&gt;\n&lt;?php \nif (have_posts()) {\n...<\/code><\/pre>\n<p>Redigera ett inl\u00e4gg och du b\u00f6r se en ny metabox &quot;Inl\u00e4ggsattribut&quot; d\u00e4r du kan v\u00e4lja Fullwidth-mall. Trevlig!<\/p>\n<h2>\u00c4ndra koden i v\u00e5r sidmall<\/h2>\n<p>L\u00e5t oss nu redigera sidmallen s\u00e5 att den faktiskt g\u00f6r n\u00e5got annorlunda \u00e4n den enstaka sidvisningen. L\u00e5t oss ta bort beg\u00e4ran om sidof\u00e4ltsmall: (Jag kommenterade den f\u00f6r att g\u00f6ra den mer synlig, men du kan bara ta bort raden).<\/p>\n<pre><code>...\n    ?&gt;&lt;p&gt;&lt;?php _e('No posts, sorry.', 'wptutorial'); ?&gt;&lt;\/p&gt;&lt;?php\n}\n\/\/get_sidebar(); \nget_footer(); ?&gt;<\/code><\/pre>\n<p>L\u00e5t oss g\u00f6ra en sak till f\u00f6r att g\u00f6ra v\u00e5r sidmall l\u00e4ttare att styla. N\u00e4r du l\u00e4gger till CSS beh\u00f6ver du ofta veta om sidan har en sidof\u00e4lt eller inte, f\u00f6r att kunna justera kolumnerna\/layouten. Kom ih\u00e5g <code>body_class<\/code>vilken ger en hel massa anv\u00e4ndbara klasser till kroppselementet? Vad h\u00e4nder om vi l\u00e4gger till en anpassad klass i br\u00f6dtexten som talar om f\u00f6r oss om den aktuella sidan har ett sidof\u00e4lt eller inte?<\/p>\n<h2>Filtrera p\u00e5<code>body_class<\/code><\/h2>\n<p>Obs! Du kanske har m\u00e4rkt att alla sidor eller inl\u00e4gg som anv\u00e4nder en sidmall redan f\u00e5r en specifik kroppsklass; &quot;page-template-&quot; \u2013 i v\u00e5rt exempel <code>\"page-template-pagetemplate-fullwidth\"<\/code>. Det \u00e4r en ganska l\u00e5ng klass, och dessutom vill vi g\u00f6ra v\u00e5rt tema mer flexibelt \u2013 och till\u00e5ta fullbredd p\u00e5 andra mallar f\u00f6rutom de som anv\u00e4nder sidmallar. Till exempel vill du vanligtvis inte ha en sidof\u00e4lt p\u00e5 framsidan, eller hur?<\/p>\n<p>Obs: Detta l\u00e4gger bara till en klass till kroppen s\u00e5 att stylingen blir enklare, det inaktiverar faktiskt inte sidof\u00e4ltsutg\u00e5ngen. Du m\u00e5ste komma ih\u00e5g att ta bort den <code>get_sidebar()<\/code>d\u00e4r du inte vill ha den.<\/p>\n<p>L\u00e5t oss l\u00e4gga till ett filter f\u00f6r <code>body_class<\/code>att l\u00e4gga till en anpassad sidof\u00e4ltsklass i v\u00e5r <code>functions.php<\/code>, s\u00e5 att du senare kan l\u00e4gga till mer till den i andra fall du inte vill ha sidof\u00e4ltet. WordPress har en trevlig villkorlig tagg f\u00f6r att kontrollera om en sidmall anv\u00e4nds; <code>is_page_template()<\/code>d\u00e4r du s\u00e4tter ditt sidmallsnamn som parameter. Vi vill l\u00e4gga till en klass om detta inte \u00e4r sant, s\u00e5 vi l\u00e4gger till det omv\u00e4nda med &quot;!&quot;:<\/p>\n<pre><code>add_filter('body_class', 'wptutorial_body_class_filter');\nfunction wptutorial_body_class_filter($classes) {\n    if (!is_page_template('pagetemplate-fullwidth.php')) {\n        $classes[] = 'has-sidebar';\n    }\n    return $classes;\n}<\/code><\/pre>\n<p>Mest troligt n\u00e4r du utvecklar mallarna kommer du ibland st\u00f6ta p\u00e5 mallar som du inte vill l\u00e4gga till sidof\u00e4ltsklassen till, och n\u00e4r du g\u00e5r l\u00e4gg till dessa fall i denna <code>if<\/code>. Om du till exempel inte vill ha sidof\u00e4ltsklassen p\u00e5 f\u00f6rstasidan kan du l\u00e4gga till <code>!is_front_page()<\/code>. Detta kommer att l\u00e4gga till klassen &#8217;has-sidebar&#8217; p\u00e5 alla sidor utom framsidan och sidmallen:<\/p>\n<pre><code>if (!is_front_page() &amp;&amp; !is_page_template('pagetemplate-fullwidth.php'))<\/code><\/pre>\n<p>Det \u00e4r upp till dig hur m\u00e5nga sidmallar du vill ha och vad de ska inneh\u00e5lla. Detta var bara en enkel introduktion. Om du \u00e4r intresserad av hur du fr\u00e5gar efter andra inl\u00e4gg i en sidmallar, ta en titt p\u00e5 <a href=\"http:\/\/awhitepixel.com\/blog\/wordpress-theme-tutorial-for-beginners-part-12-custom-post-queries\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">n\u00e4sta steg<\/a>.<\/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 den h\u00e4r temalektionen f\u00f6r nyb\u00f6rjare l\u00e4r vi oss om anpassade sidmallar i WordPress; vad de \u00e4r, hur man skapar dem och b\u00e4sta praxis.<\/p>\n","protected":false},"author":1,"featured_media":223984,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[932,901,724,838,848,901,1110,807,807,838,932,848,724,868,868],"tags":[1173],"class_list":{"0":"post-233302","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","6":"hentry","7":"category-aemnen","8":"category-koda","9":"category-utvecklaren","10":"category-guide-foer-nyboerjare","11":"category-handledningar","13":"category-n-a","14":"category-php-9","20":"category-wordpress-9","22":"tag-affiai-sv"},"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/233302","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=233302"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/233302\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media\/223984"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media?parent=233302"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/categories?post=233302"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/tags?post=233302"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}