{"id":233482,"date":"2023-02-15T20:16:00","date_gmt":"2023-02-15T17:16:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=233482"},"modified":"2022-11-10T23:55:53","modified_gmt":"2022-11-10T20:55:53","slug":"guide-allt-om-hooks-i-wordpress","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/sv\/guide-allt-om-hooks-i-wordpress\/","title":{"rendered":"Guide: Allt om Hooks i WordPress"},"content":{"rendered":"\n<p>Har du n\u00e5gonsin f\u00e5tt h\u00f6ra att l\u00f6sningen p\u00e5 ditt problem \u00e4r att du m\u00e5ste &quot;haka p\u00e5&quot; n\u00e5got f\u00f6r att g\u00f6ra din grej eller anv\u00e4ndas <code>add_filter<\/code>utan att riktigt f\u00f6rst\u00e5 varf\u00f6r det f\u00f6rst\u00f6r saker? Krokar utg\u00f6r grunden f\u00f6r WordPress och ger teman och plugins ett s\u00e4tt att interagera eller \u00e4ndra kod. I det h\u00e4r inl\u00e4gget kommer vi att dela upp vad krokar \u00e4r, hur de fungerar och hur vi kan anv\u00e4nda dem.<\/p>\n<h2>Vad \u00e4r krokar?<\/h2>\n<p>N\u00e4r WordPress k\u00f6r igenom sin kod (hela v\u00e4gen fr\u00e5n b\u00f6rjan av att ladda klasser, ladda plugins, ladda temat, g\u00f6ra fr\u00e5gan f\u00f6r den aktuella beg\u00e4ran och slutligen rendera HTML-koden), g\u00e5r den igenom ett g\u00e4ng &quot;checkpoints&quot;; krokar. N\u00e4r en krok p\u00e5tr\u00e4ffas kommer WordPress att stoppa vad den g\u00f6r \u2013 och kontrollera om det finns n\u00e5gra funktioner (i tema, plugin eller sj\u00e4lva WordPress) som \u00e4r registrerade f\u00f6r att k\u00f6ra p\u00e5 denna krok. Om det finns kommer WordPress att k\u00f6ra alla dessa funktioner och sedan forts\u00e4tta d\u00e4r det slutade.<\/p>\n<p>Detta g\u00f6r det m\u00f6jligt f\u00f6r plugins, teman och sj\u00e4lva WordPress att &quot;haka p\u00e5&quot; vissa punkter f\u00f6r att l\u00e4gga till t.ex. stilmallar i temats <code>&lt;head&gt;<\/code>tagg, modifiera hur WordPress fr\u00e5gar efter inl\u00e4gg eller helt enkelt \u00e4ndra inl\u00e4ggets inneh\u00e5ll om s\u00e5 \u00f6nskas.<\/p>\n<p>Det finns tv\u00e5 typer av krokar; \u00e5tg\u00e4rder och filter. De fungerar ganska lika varandra, men med ett undantag som vi kommer att titta n\u00e4rmare p\u00e5 nedan.<\/p>\n<h2>\u00c5tg\u00e4rder och filter<\/h2>\n<p>F\u00f6r att ansluta till en \u00e5tg\u00e4rd eller ett filter m\u00e5ste du definiera vilken hook (med dess namn) du vill anv\u00e4nda och definiera en \u00e5teruppringning \u2013 vilket \u00e4r namnet p\u00e5 funktionen du vill k\u00f6ra. I de flesta fall ger krokarna parametrar eller variabler som \u00e4r relevanta f\u00f6r kroken.<\/p>\n<p>\u00c5tg\u00e4rder \u00e4r helt enkelt &quot;kontrollpunkter&quot; i utf\u00f6randet av WordPress, d\u00e4r du kan utf\u00f6ra en uppgift eller eka n\u00e5got. I vissa s\u00e4llsynta fall kan du modifiera ett objekt (tillhandah\u00e5lls i parametrar), s\u00e5 att all efterf\u00f6ljande exekvering fungerar med det \u00e4ndrade objektet.<\/p>\n<p>Filter \u00e4r till f\u00f6r att \u00e4ndra en variabel eller utdata. Alla filterkrokar kommer att tillhandah\u00e5lla variabeln du kan \u00e4ndra som f\u00f6rsta parameter, och l\u00e5ter dig \u00e4ndra den eller returnera n\u00e5got annat.<\/p>\n<p>WordPress k\u00f6r m\u00e5nga hooks, men du kan skapa din egen i ditt plugin eller tema. Detta till\u00e5ter utvecklare att ut\u00f6ka och \u00e4ndra din kod; till exempel modifiera ett plugin via ett tema, eller modifiera det \u00f6verordnade temat via det underordnade temat.<\/p>\n<p>M\u00e5nga av WordPress funktioner, som vanligtvis anv\u00e4nds f\u00f6r att skriva ut inl\u00e4gg, \u00e4r ocks\u00e5 filter eller \u00e5tg\u00e4rder. Funktionen <code>the_title()<\/code>skriver till exempel ut inl\u00e4ggets titel, men det \u00e4r ocks\u00e5 ett filter.<\/p>\n<p>L\u00e5t oss titta p\u00e5 hur vi kopplar till dessa i praktiken.<\/p>\n<h2>Hakar p\u00e5 handlingar<\/h2>\n<p>F\u00f6r att haka p\u00e5 en handling anv\u00e4nder du metoden <code>add_action()<\/code>. Det kr\u00e4ver minst tv\u00e5 parametrar; hook-namnet och \u00e5teruppringningen; namnet p\u00e5 den funktion du vill k\u00f6ra. Alternativt kan du ange prioritet som tredje parameter och definiera antalet argument som kommer att skickas till din \u00e5teruppringningsfunktion. Vi kommer att unders\u00f6ka de tv\u00e5 valfria parametrarna senare, men f\u00f6r nu \u00e4r h\u00e4r ett exempel p\u00e5 <code>add_action<\/code>:<\/p>\n<pre><code>add_action('init', 'my_function_name');\nfunction my_function_name() {\n    \/\/ Do your stuff\n}<\/code><\/pre>\n<p>Den f\u00f6rsta parametern till <code>add_action<\/code>\u00e4r namnet p\u00e5 \u00e5tg\u00e4rden; i det h\u00e4r fallet <code>init<\/code>, vilket \u00e4r en ganska vanlig WordPress-hook som h\u00e4nder under initialisering. Den andra parametern \u00e4r din \u00e5teruppringning, i detta fall namnet p\u00e5 funktionen vi vill k\u00f6ra. Sedan \u00e4r allt du beh\u00f6ver g\u00f6ra att definiera en funktion med det namnet och l\u00e4gga till din kod inuti den.<\/p>\n<p>Du kan ocks\u00e5 anv\u00e4nda anonyma funktioner som \u00e4r d\u00e4r du definierar funktionen inuti <code>add_action<\/code>ist\u00e4llet f\u00f6r att ge ett funktionsnamn, som s\u00e5;<\/p>\n<pre><code>add_action('init', function() {\n    \/\/ Do your stuff\n});<\/code><\/pre>\n<p>M\u00e5nga utvecklare f\u00f6redrar denna metod eftersom detta f\u00f6rhindrar risken att omdefiniera en PHP-funktion med samma namn.<\/p>\n<p>Om du beh\u00f6ver k\u00f6ra en funktion definierad i en PHP-klass, m\u00e5ste du tillhandah\u00e5lla en array som callback-parametern; d\u00e4r det f\u00f6rsta elementet \u00e4r klassobjektet och det andra elementet \u00e4r funktionsnamnet:<\/p>\n<pre><code>class MyClass {\n    public function __construct() {\n        add_action('init', [$this, 'myFunctionName']);\n    }\n\u00a0\n    public function myFunctionName() {\n        \/\/ Do your stuff\n    }\n}<\/code><\/pre>\n<h2>Hakar p\u00e5 filter<\/h2>\n<p>F\u00f6r att haka p\u00e5 ett filter anv\u00e4nder du funktionen <code>add_filter()<\/code>. P\u00e5 samma s\u00e4tt som \u00e5tg\u00e4rderna ovan \u00e4r f\u00f6rsta parametrarna filternamnet och den andra \u00e4r din \u00e5teruppringning. Alternativt kan du ange prioritet som tredje parameter och antalet argument som fj\u00e4rde. H\u00e4r \u00e4r ett exempel p\u00e5 <code>add_filter<\/code>:<\/p>\n<pre><code>add_filter('the_title', 'my_function_name');\nfunction my_function_name($title) {\n    \/\/ Do your stuff\n    return $title;\n}<\/code><\/pre>\n<p>I exemplet ovan hakar vi p\u00e5 filtret <code>the_title<\/code>(som skriver ut posttiteln) och s\u00e4ger \u00e5t WordPress att k\u00f6ra v\u00e5r funktion. Alla filter ger alltid ett argument; variabeln som ska \u00e4ndras. I min funktion d\u00f6pte jag det <code>$title<\/code>som jag vet att det inneh\u00e5ller inl\u00e4ggets titel. Inuti funktionen kan jag modifiera den eller helt \u00e5sidos\u00e4tta variabeln. Det \u00e4r viktigt att komma ih\u00e5g att i filter <strong>m\u00e5ste du alltid returnera variabeln<\/strong>. Om du inte returnerar n\u00e5got i din callback-funktion t\u00f6ms variabeln. Om jag hoppade \u00f6ver retursatsen i exemplet ovan skulle inga inl\u00e4ggstitlar n\u00e5gonsin eka n\u00e5gonstans.<\/p>\n<p>Variabelargumentet och regeln att returnera n\u00e5got i din callback-funktion \u00e4r praktiskt taget den enda skillnaden mellan filter och \u00e5tg\u00e4rder. Allt annat fungerar likadant. Du kan f\u00f6lja exemplen f\u00f6r anonyma funktioner och klasser som visas f\u00f6r \u00e5tg\u00e4rder ovan f\u00f6r filter, s\u00e5v\u00e4l som de valfria parametrarna prioritet och antal argument; som vi ska titta p\u00e5 h\u00e4rn\u00e4st.<\/p>\n<h2>Prioritet<\/h2>\n<p>Den tredje (valfria) parametern till <code>add_action<\/code>och <code>add_filter<\/code>\u00e4r ett heltal som definierar prioritet f\u00f6r din \u00e5teruppringningsfunktion. Detta \u00e4r anv\u00e4ndbart i fall d\u00e4r det finns flera funktioner (inte n\u00f6dv\u00e4ndigtvis fr\u00e5n dig i ditt tema eller plugin, kom ih\u00e5g att WordPress sj\u00e4lv anv\u00e4nder sina egna krokar), och du m\u00e5ste best\u00e4mma vilken som ska k\u00f6ras f\u00f6rst.<\/p>\n<p>Om ingen prioritet tillhandah\u00e5lls, \u00e4r den standard till 10. Ju l\u00e4gre prioritet, desto tidigare k\u00f6rs det, och ju h\u00f6gre prioritet, desto senare k\u00f6rs det. Du kan inte ge en negativ prioritet.<\/p>\n<p>F\u00f6rest\u00e4ll dig flera \u00e5teruppringningsfunktioner registrerade p\u00e5 <code>init<\/code>. Om ingen prioritet gavs f\u00f6r flera \u00e5teruppringningar kommer WordPress att k\u00f6ra dem i den ordning de hittades (till exempel i <code>functions.php<\/code>eller din plugin-kod).<\/p>\n<pre><code>add_action('init', 'my_function_name');\nadd_action('init', 'my_second_function_name');\nadd_action('init', 'my_third_function_name', 12);\nadd_action('init', 'my_fourth_function_name', 1);<\/code><\/pre>\n<p>Detta skulle vara den ordning i vilken WordPress kommer att k\u00f6ra ovanst\u00e5ende \u00e5teruppringningar:<\/p>\n<ol>\n<li><code>my_fourth_function_name<\/code>(prioritet 1)<\/li>\n<li><code>my_function_name<\/code>(prioritet 10)<\/li>\n<li><code>my_second_function_name<\/code>(prioritet 10, men visas senare i koden)<\/li>\n<li><code>my_third_function_name<\/code>(prioritet 12)<\/li>\n<\/ol>\n<h2>Antal argument<\/h2>\n<p>Vanligtvis ger krokar ytterligare data som \u00e4r relevanta och anv\u00e4ndbara f\u00f6r \u00e5teruppringningsfunktionerna. Till exempel ger \u00e5tg\u00e4rden <code>save_post<\/code>(k\u00f6rs n\u00e4r ett inl\u00e4gg uppdateras) tv\u00e5 m\u00f6jliga argument; inl\u00e4ggets ID och postobjektet. Dessa \u00e4r anv\u00e4ndbara f\u00f6r operationer som du vanligtvis beh\u00f6ver f\u00f6r att k\u00f6ra p\u00e5 den h\u00e4r kroken (om du till exempel vill spara en inl\u00e4ggsmeta beh\u00f6ver du post-ID).<\/p>\n<p>Om inget antal argument angavs f\u00f6r en \u00e5tg\u00e4rd eller ett filter, \u00e4r det som standard 1. Det \u00e4r d\u00e4rf\u00f6r du inte beh\u00f6ver definiera 1 f\u00f6r <code>add_filter<\/code>att komma \u00e5t variabeln som filtret \u00e4r kopplat till. \u00c5tg\u00e4rder kan dock inte skicka n\u00e5gra argument \u00e4ven om antalet argument \u00e4r satt till 1 som standard.<\/p>\n<p>L\u00e5t oss titta p\u00e5 ett exempel p\u00e5 hur vi definierar antalet argument och hur vi kommer \u00e5t dem i v\u00e5r callback-funktion:<\/p>\n<pre><code>add_action('save_post', 'my_function_name', 10, 2);\nfunction my_function_name($post_id, $post) {\n    \/\/ Do your stuff\n}<\/code><\/pre>\n<p>I exemplet ovan s\u00e4ger vi \u00e5t WordPress att skicka tv\u00e5 argument till v\u00e5r callback-funktion. Kom ih\u00e5g att vi m\u00e5ste definiera prioritet som tredje parameter, s\u00e5 vanligtvis definierar vi standardv\u00e4rdet, vilket \u00e4r 10. N\u00e4r det g\u00e4ller v\u00e5r callback-funktion kan vi nu definiera samma antal argument som vi bad om, i exemplet ovan var 2.<\/p>\n<p>Om vi \u200b\u200bi exemplet ovan hade satt antalet argument till 1, skulle bara det f\u00f6rsta argumentet i v\u00e5r callback-funktion fyllas i. Den andra, <code>$post<\/code>, skulle vara odefinierad.<\/p>\n<h2>Vad h\u00e4nder om vi beh\u00f6ver data som inte skickades i kroken?<\/h2>\n<p>Det \u00e4r helt upp till utvecklaren som skapade kroken att definiera vilka argument som kan skickas. Det betyder att du inte bara kan tvinga fram vilka argument du \u00f6nskar eller beh\u00f6ver i din <code>add_action<\/code>eller <code>add_filter<\/code>. Som tur \u00e4r har vi i de flesta fall alternativ f\u00f6r att f\u00e5 variabler vi beh\u00f6ver. Om du kopplar in dig p\u00e5 en \u00e5tg\u00e4rd eller ett filter d\u00e4r du vet att vissa globala variabler b\u00f6r definieras, kan du komma \u00e5t dessa globala variabler i din \u00e5teruppringningsfunktion. Dessutom har WordPress en <a href=\"https:\/\/codex.wordpress.org\/Conditional_Tags\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">hel rad villkorliga taggar som<\/a> du kan anv\u00e4nda i dina hakade funktioner (med undantag f\u00f6r de mycket tidiga krokarna som intr\u00e4ffar innan WordPress definierar dessa villkorliga taggar)<\/p>\n<p>L\u00e5t oss titta p\u00e5 ett exempel p\u00e5 tillg\u00e5ng till globala variabler. Filtret <code>the_title<\/code>tillhandah\u00e5ller post-ID som valfritt argument, som vi kan komma \u00e5t genom att definiera det som acceptabelt argument;<\/p>\n<pre><code>add_filter('the_title', 'my_function_name', 10, 2);\nfunction my_function_name($title, $post_id) {\n    if ($post_id == 1) {\n        return 'First post ever!';\n    }\n    return $title;\n}<\/code><\/pre>\n<p>Men vi kan uppn\u00e5 samma resultat genom att;<\/p>\n<pre><code>add_filter('the_title', 'my_function_name');\nfunction my_function_name($title) {\n    global $post;\n    if ($post-&gt;ID == 1) {\n        return 'First post ever!';\n    }\n    return $title;\n}<\/code><\/pre>\n<p>Om du vet att en global variabel definieras av den punkt som kroken k\u00f6rs, kan du definiera dem som globala i din \u00e5teruppringningsfunktion och komma \u00e5t data d\u00e4rifr\u00e5n. Till exempel att definiera <code>global $wp_query<\/code>i exemplet ovan skulle ocks\u00e5 ge dig tillg\u00e5ng till hela wp_query-objektet i din funktions\u00e5teruppringning.<\/p>\n<p><a href=\"https:\/\/codex.wordpress.org\/Conditional_Tags\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">WordPress villkorliga taggar<\/a> \u00e4r extremt anv\u00e4ndbara. S\u00e5vida du inte har fastnat i en krok som intr\u00e4ffar mycket tidigt i k\u00f6rningen av WordPress, \u00e4r de tillg\u00e4ngliga. Det finns villkorade taggar f\u00f6r att kontrollera vilken sida (mall) du befinner dig p\u00e5, om du \u00e4r inne i en meny eller en inl\u00e4ggsslinga och mycket mer. Till exempel, n\u00e4r du \u00e4ndrar inl\u00e4ggsfr\u00e5gan med hj\u00e4lp av kroken <code>pre_get_posts<\/code>\u00e4r det mycket anv\u00e4ndbart att se till att din kod bara k\u00f6rs i vissa fall. Till exempel;<\/p>\n<pre><code>add_action('pre_get_posts', 'my_function_name');\nfunction my_function_name($query) {\n    if (!is_admin()) {\n        \/\/ Do your stuff\n    }\n}<\/code><\/pre>\n<p>Eftersom hooken <code>pre_get_posts<\/code>k\u00f6rs b\u00e5de i admin och frontend, kan vi anv\u00e4nda en villkorlig tagg f\u00f6r att s\u00e4kerst\u00e4lla att v\u00e5r kod endast p\u00e5verkar frontend-fr\u00e5gan.<\/p>\n<h2>Skapa dina egna krokar<\/h2>\n<p>Du kan definiera dina egna \u00e5tg\u00e4rder och filter. Om du \u00e4r en tema- eller plugin-utvecklare uppmuntras du att g\u00f6ra det, f\u00f6r att till\u00e5ta andra att \u00e4ndra din kod utan att \u00e4ndra k\u00e4llkoden.<\/p>\n<p>Registrera en \u00e5tg\u00e4rd med <code>do_action()<\/code>och registrera ett filter med <code>apply_filters()<\/code>.<\/p>\n<p>Den <code>do_action()<\/code>kr\u00e4ver minst 1 parameter; krokens namn. T\u00e4nk p\u00e5 att hook-namnet m\u00e5ste vara unikt (kalla det inte t.ex. <code>init<\/code>eftersom detta \u00e4r en grundl\u00e4ggande WordPress-hook). Placera den <code>do_action()<\/code>d\u00e4r du vill att kroken ska synas. Till exempel kan du placera kroken i ditt temas <code>header.php<\/code>, direkt efter br\u00f6dtexten f\u00f6r att definiera en krok d\u00e4r utvecklare kan mata ut skript eller annat inneh\u00e5ll.<\/p>\n<pre><code>...\n&lt;body&gt;\n    &lt;?php do_action('mytheme_after_body'); ?&gt;<\/code><\/pre>\n<p>Du kan l\u00e4gga till s\u00e5 m\u00e5nga parametrar <code>do_action<\/code>som du vill efter krokens namn. F\u00f6rs\u00f6k att t\u00e4nka p\u00e5 vad datautvecklare skulle beh\u00f6va i dina krokar, som annars inte \u00e4r l\u00e4ttillg\u00e4ngliga.<\/p>\n<p>Det <code>apply_filters()<\/code>kr\u00e4ver minst 2 parametrar; krokens namn och variabeln som du registrerar filtret p\u00e5. Till exempel kan ditt tema registrera ett filter runt vissa HTML-klasser f\u00f6r att till\u00e5ta utvecklare att \u00e4ndra eller l\u00e4gga till dessa:<\/p>\n<pre><code>&lt;section class=\"&lt;?php echo apply_filters('mytheme_section_classes', 'section default-class'); ?&gt;\"&gt;\n    ...\n&lt;\/section&gt;<\/code><\/pre>\n<p>Precis som med \u00e5tg\u00e4rder kan du l\u00e4gga till s\u00e5 m\u00e5nga parametrar <code>apply_filters<\/code>som du vill efter de tv\u00e5 obligatoriska parametrarna.<\/p>\n<h2>Slutsats och anv\u00e4ndbara resurser<\/h2>\n<p>Med detta hoppas jag att du har uppn\u00e5tt en gedigen f\u00f6rst\u00e5else f\u00f6r hur WordPress k\u00f6r det mesta av sin kod, hur du kan modifiera kod och hur du som utvecklare kan till\u00e5ta andra utvecklare att g\u00f6ra \u00e4ndringar i din kod ocks\u00e5.<\/p>\n<ul>\n<li><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/add_action\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">add_action<\/a><\/li>\n<li><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/add_filter\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">add_filter<\/a><\/li>\n<li><a href=\"https:\/\/codex.wordpress.org\/Conditional_Tags\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">WordPress villkorliga taggar<\/a><\/li>\n<li><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/do_action\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">do_action<\/a><\/li>\n<li><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/apply_filters\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">till\u00e4mpa_filter<\/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 guiden f\u00f6r nyb\u00f6rjare l\u00e4r vi oss vad WordPress-krokar och filter \u00e4r, hur de fungerar och hur man anv\u00e4nder dem.<\/p>\n","protected":false},"author":1,"featured_media":153117,"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,838,932,848,724,868,868],"tags":[1173],"class_list":["post-233482","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-aemnen","category-koda","category-utvecklaren","category-guide-foer-nyboerjare","category-handledningar","category-n-a","category-wordpress-9","tag-affiai-sv"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/233482","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=233482"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/233482\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media\/153117"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media?parent=233482"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/categories?post=233482"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/tags?post=233482"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}