{"id":233577,"date":"2023-02-18T13:01:00","date_gmt":"2023-02-18T10:01:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=233577"},"modified":"2022-11-11T00:26:44","modified_gmt":"2022-11-10T21:26:44","slug":"handledning-foer-wordpress-tema-foer-nyboerjare-del-3-dynamiskt-innehaall","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/sv\/handledning-foer-wordpress-tema-foer-nyboerjare-del-3-dynamiskt-innehaall\/","title":{"rendered":"Handledning f\u00f6r WordPress-tema f\u00f6r nyb\u00f6rjare \u2013 Del 3: Dynamiskt inneh\u00e5ll"},"content":{"rendered":"\n<p>I den h\u00e4r lektionen av WordPress-temahandledningen f\u00f6r nyb\u00f6rjare kommer vi att l\u00e4ra oss om krokar i WordPress och l\u00e4gga till n\u00e5gra krokar i v\u00e5rt tema som kr\u00e4vs f\u00f6r att ett tema ska fungera korrekt med WordPress och plugins. Vi kommer ocks\u00e5 att b\u00f6rja komma \u00e5t dynamiskt inneh\u00e5ll fr\u00e5n WordPress i v\u00e5r header, som att automatiskt f\u00e5 den aktuella sidtiteln.<\/p>\n<p>F\u00f6rst m\u00e5ste vi l\u00e4ra oss lite om hooks i WordPress. Krokar \u00e4r en k\u00e4rnfunktion du beh\u00f6ver f\u00f6r att bekanta dig med. Jag \u00e4r inte ett fan av att bara visa en hel massa kod d\u00e4r du beh\u00f6ver kopiera+klistra in utan att veta vad det egentligen g\u00f6r. Om du f\u00f6ljer den h\u00e4r handledningen vill du l\u00e4ra dig detta ordentligt, eller hur?<\/p>\n<p>Oroa dig inte, jag h\u00e5ller det kort tills vidare. Vi kommer att l\u00e4ra oss mer om dessa senare i denna handledning.<\/p>\n<h2>Krokar i WordPress<\/h2>\n<p>Kortfattat; eftersom WordPress k\u00f6r all kod f\u00f6r att ladda och rendera en sida, finns det vissa &quot;checkpoints&quot; \u2013 som vi kallar hooks. Dessa punkter \u00e4r d\u00e4r WordPress till\u00e5ter utvecklare att \u00e4ndra eller l\u00e4gga till sin egen kod. WordPress har definierat en hel massa &quot;checkpoints&quot; d\u00e4r, var och en med ett unikt namn. Om du k\u00e4nner till namnet p\u00e5 den kan du l\u00e4gga till din egen kod vid dessa kontrollpunkter. Och d\u00e4rmed enkelt s\u00e4ga \u00e5t WordPress att k\u00f6ra din kod n\u00e4r den n\u00e5r den kontrollpunkten som en del av processen.<\/p>\n<p>Det finns tv\u00e5 typer av krokar; \u00e5tg\u00e4rder och filter. <strong>\u00c5tg\u00e4rder<\/strong> \u00e4r punkter i koden d\u00e4r du kan l\u00e4gga till anpassad kod, till exempel att mata ut n\u00e5got eller g\u00f6ra n\u00e5got f\u00f6r dina egna syften. <strong>Filter<\/strong> \u00e4r punkter i koden d\u00e4r du kan modifiera en viss variabel innan den anv\u00e4nds eller matas ut. De \u00e4r v\u00e4ldigt lika, men filter \u00e4r kopplade till en specifik variabel och \u00e5tg\u00e4rder \u00e4r det inte.<\/p>\n<p>Plugins, teman och sj\u00e4lva WordPress kan &quot;haka&quot; sin kod med <code>add_action()<\/code>f\u00f6r \u00e5tg\u00e4rder och <code>add_filter()<\/code>f\u00f6r filter. Dessa tv\u00e5 funktioner s\u00e4ger \u00e5t WordPress att k\u00f6ra den krokade koden n\u00e4r exekveringen n\u00e5r dessa krokar.<\/p>\n<p>F\u00f6r att definiera krokar anv\u00e4nder du <code>do_action()<\/code>f\u00f6r \u00e5tg\u00e4rder och <code>apply_filters()<\/code>f\u00f6r filter.<\/p>\n<p>F\u00f6r alla som \u00e4r intresserade av att veta mer har jag ett annat <a href=\"http:\/\/awhitepixel.com\/blog\/all-about-hooks-in-wordpress\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">inl\u00e4gg som g\u00e5r in i detalj om hooks<\/a> i WordPress.<\/p>\n<p>Ett WordPress-tema m\u00e5ste inneh\u00e5lla n\u00e5gra specifika viktiga krokar (\u00e5tg\u00e4rder). Dessa krokar till\u00e5ter WordPress, plugins och sj\u00e4lva v\u00e5rt tema att haka p\u00e5 och g\u00f6ra viktiga saker. L\u00e5t oss titta p\u00e5 de kritiska krokarna vi beh\u00f6ver l\u00e4gga till.<\/p>\n<h2>Temats sidhuvud och sidfot krokar<\/h2>\n<p>Alla WordPress-teman m\u00e5ste ha tv\u00e5 krokar i mallarna. En \u00e5tg\u00e4rd m\u00e5ste placeras i sidhuvudet (inuti <code>&lt;head&gt;<\/code>taggen), och en annan i sidfoten (precis f\u00f6re st\u00e4ngningstaggen <code>&lt;\/body&gt;<\/code>). Dessa tv\u00e5 krokar \u00e4r absolut n\u00f6dv\u00e4ndiga f\u00f6r att WordPress, ditt tema och alla plugin ska kunna l\u00e4gga till sina skript och stilkod till ditt tema.<\/p>\n<p>Krokarna vi beh\u00f6ver \u00e4r <code>wp_head<\/code>och <code>wp_footer<\/code>f\u00f6r sidhuvudet respektive sidfoten.<\/p>\n<p>Normalt n\u00e4r vi vill k\u00f6ra en krok, skulle vi ringa <code>do_action(&lt;hook name&gt;)<\/code>. Men eftersom dessa tv\u00e5 krokar \u00e4r s\u00e5 kritiska har WordPress f\u00f6renklat dem f\u00f6r oss genom att l\u00e4gga dem i ett enkelt funktionsanrop. S\u00e5 f\u00f6r dessa tv\u00e5 krokar kan du helt enkelt anv\u00e4nda <code>wp_head()<\/code>och <code>wp_footer()<\/code>. I bakgrunden k\u00f6r dessa tv\u00e5 <code>do_action()<\/code>.<\/p>\n<p>L\u00e5t oss l\u00e4gga till dessa tv\u00e5 krokar (funktionsanrop) till v\u00e5ra sidhuvuds- och sidfotsmallar och se vad som h\u00e4nder.<\/p>\n<pre><code>&lt;!DOCTYPE html&gt;\n&lt;html&gt;\n    &lt;head&gt;\n        &lt;meta charset=\"utf-8\"&gt;\n        &lt;title&gt;A White Pixel Theme&lt;\/title&gt;\n\u00a0\n        &lt;?php wp_head(); ?&gt;\n    &lt;\/head&gt;\n&lt;body&gt;<\/code><\/pre>\n<pre><code>        &lt;?php wp_footer(); ?&gt;\n    &lt;\/body&gt;\n&lt;\/html&gt;<\/code><\/pre>\n<p>Tryck p\u00e5 Uppdatera p\u00e5 din frontend. Om du \u00e4r inloggad b\u00f6r du nu se WordPress adminf\u00e4lt visas! Detta inneb\u00e4r att WordPress nu framg\u00e5ngsrikt kan l\u00e4gga till sina skript och stilar till ditt tema.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-152824-61e4fb80a88c0.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-152824-61e4fb80a88c0.png\" alt=\"Handledning f\u00f6r WordPress-tema f\u00f6r nyb\u00f6rjare \u2013 Del 3: Dynamiskt inneh\u00e5ll\" ><\/a><\/p>\n<p>Du kan kontrollera din HTML-k\u00e4lla och se att din rubrik nu inneh\u00e5ller en hel del kod. Det h\u00e4r \u00e4r kod som du inte har lagt till i ditt tema. Som du kan se anv\u00e4nder WordPress sj\u00e4lva krokarna vi lade till f\u00f6r att g\u00f6ra sina egna saker.<\/p>\n<p>L\u00e5t oss g\u00e5 vidare fr\u00e5n krokar och b\u00f6rja titta p\u00e5 hur vi dynamiskt kan h\u00e4mta inneh\u00e5ll fr\u00e5n WordPress och mata ut dessa i v\u00e5r header.<\/p>\n<h2>Dynamiskt inneh\u00e5ll i header<\/h2>\n<p>L\u00e5t oss s\u00e4ga \u00e5t WordPress att dynamiskt st\u00e4lla in dokumenttiteln (f\u00f6r <code>&lt;title&gt;<\/code>taggen). F\u00f6r detta kommer vi att anv\u00e4nda en funktion, (som har ett filter f\u00f6rresten), som heter <code>wp_title()<\/code>. Som vi l\u00e4rde oss ovan, eftersom <code>wp_title()<\/code>det \u00e4r ett filter, kan du, WordPress eller plugins \u00e4ndra utdata. Vi kommer att l\u00e4gga till ett filter till detta senare i denna handledning.<\/p>\n<p>Funktionen <code>wp_title()<\/code>tar <a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/wp_title\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">flera argument<\/a> som du kan justera efter eget tycke, men f\u00f6r n\u00e4rvarande l\u00e4gger jag till en tom str\u00e4ng s\u00e5 att den bara visar titeln p\u00e5 vilken sida vi \u00e4n befinner oss p\u00e5.<\/p>\n<p>Byt ut din <code>&lt;title&gt;<\/code>tagg <code>header.php<\/code>till detta:<\/p>\n<pre><code>&lt;title&gt;&lt;?php wp_title(''); ?&gt;&lt;\/title&gt;<\/code><\/pre>\n<p>De glada av er kanske har m\u00e4rkt att f\u00f6rstasidan inte kommer att generera en titel. Detta \u00e4r standard WordPress-beteende som vi kommer att fixa senare i denna handledning (vi kommer att g\u00f6ra detta med hj\u00e4lp av filtret). Om du bes\u00f6ker ett enskilt inl\u00e4gg eller en sida b\u00f6r du f\u00e5 inl\u00e4ggets titel.<\/p>\n<p>WordPress har en snygg funktion som dynamiskt genererar ett g\u00e4ng klasser f\u00f6r <code>&lt;body&gt;<\/code>taggen beroende p\u00e5 vilken sida vi \u00e4r p\u00e5; kallas <a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/body_class\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">body_class<\/a>. Uppdatera <code>&lt;body&gt;<\/code>taggen <code>header.php<\/code>till detta:<\/p>\n<pre><code>&lt;body &lt;?php body_class(); ?&gt;&gt;<\/code><\/pre>\n<p>Uppdatera och ta en titt p\u00e5 alla klasser som lagts till i <code>&lt;body&gt;<\/code>taggen. Ta en titt p\u00e5 olika sidor (framsida, singel, kategori). Alla dessa klasser \u00e4r mycket anv\u00e4ndbara f\u00f6r styling och f\u00f6r att skilja olika liknande delar \u00e5t. Du kommer med st\u00f6rsta sannolikhet att anv\u00e4nda n\u00e5gra av dessa i din CSS.<\/p>\n<p>F\u00f6r att f\u00f6lja god HTML-praxis b\u00f6r vi ocks\u00e5 informera om webbplatsens spr\u00e5k i HTML-koden. F\u00f6r detta anv\u00e4nder vi en WordPress-funktion f\u00f6r att h\u00e4mta spr\u00e5ket fr\u00e5n Inst\u00e4llningar; <a href=\"https:\/\/codex.wordpress.org\/Function_Reference\/language_attributes\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">spr\u00e5k_attribut<\/a>.<\/p>\n<pre><code>&lt;html &lt;?php language_attributes(); ?&gt;&gt;<\/code><\/pre>\n<p>Och till sist skulle jag vilja l\u00e4gga till n\u00e5gra metataggar och s\u00e5dant som inte \u00e4r WordPress-specifika, utan f\u00f6ljer vanliga webbdesignpraxis. S\u00e5 h\u00e4r ser hela <code>header.php<\/code>filen ut:<\/p>\n<pre><code>&lt;!DOCTYPE html&gt;\n&lt;html class=\"no-js\" &lt;?php language_attributes(); ?&gt;&gt;\n&lt;head&gt;\n    &lt;meta charset=\"utf-8\"&gt;\n    &lt;meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"&gt;\n\u00a0\n    &lt;meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"&gt;\n    &lt;title&gt;&lt;?php wp_title(''); ?&gt;&lt;\/title&gt;\n\u00a0\n    &lt;?php wp_head(); ?&gt;\n&lt;\/head&gt;\n&lt;body &lt;?php body_class(); ?&gt;&gt;<\/code><\/pre>\n<p>F\u00f6r n\u00e4sta steg i denna handledning kommer vi att l\u00e4mna <code>header.php<\/code>och dyka in <code>index.php<\/code>f\u00f6r att l\u00e4ra oss hur man h\u00e4mtar mer dynamiskt inneh\u00e5ll, till exempel inl\u00e4gg.<\/p>\n<h2>Dokumentation om anv\u00e4nda metoder<\/h2>\n<ul>\n<li><a href=\"https:\/\/codex.wordpress.org\/Function_Reference\/wp_head\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">wp_head<\/a><\/li>\n<li><a href=\"https:\/\/codex.wordpress.org\/Function_Reference\/wp_footer\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">wp_sidfot<\/a><\/li>\n<li><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/wp_title\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">wp_title<\/a><\/li>\n<li><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/body_class\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">body_class<\/a><\/li>\n<li><a href=\"https:\/\/codex.wordpress.org\/Function_Reference\/language_attributes\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">spr\u00e5k_attribut<\/a><\/li>\n<\/ul>\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 lektionen kommer du att l\u00e4ra dig om krokar i WordPress och hur du kommer \u00e5t och matar ut dynamiskt inneh\u00e5ll fr\u00e5n WordPress i headern.<\/p>\n","protected":false},"author":1,"featured_media":224746,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[932,901,724,838,848,901,922,1110,922,838,932,848,724,868,868],"tags":[1173],"class_list":{"0":"post-233577","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-oevrig","14":"category-n-a","20":"category-wordpress-9","22":"tag-affiai-sv"},"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/233577","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=233577"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/233577\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media\/224746"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media?parent=233577"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/categories?post=233577"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/tags?post=233577"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}