{"id":229871,"date":"2022-11-26T19:49:00","date_gmt":"2022-11-26T16:49:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=229871"},"modified":"2022-11-09T16:45:35","modified_gmt":"2022-11-09T13:45:35","slug":"hur-man-tar-bort-specialtecken-fraan-permalaenkar","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/sv\/hur-man-tar-bort-specialtecken-fraan-permalaenkar\/","title":{"rendered":"Hur man tar bort specialtecken fr\u00e5n permal\u00e4nkar"},"content":{"rendered":"\n<p>N\u00e4r du arbetar med WordPress och tredjeparts-API:er finns det alltid en chans att du kommer att st\u00f6ta p\u00e5 problem d\u00e4r tredjeparts-API:n inte \u00e4r beredd att hantera vissa tecken som finns i en permal\u00e4nk.<\/p>\n<p>Beroende p\u00e5 ens permal\u00e4nkinst\u00e4llningar kan detta dock vara ett problem eller inte. Till exempel kan du ha dina permal\u00e4nkar inst\u00e4llda p\u00e5 n\u00e5got som <strong>?p=123<\/strong> f\u00f6r varje inl\u00e4gg. I s\u00e5 fall \u00e4r det inte s\u00e5 mycket problem.<\/p>\n<p>Men om du anv\u00e4nder &quot;ganska permal\u00e4nkar&quot; och din permal\u00e4nk inneh\u00e5ller n\u00e5got som en varum\u00e4rkessymbol eller en copyright-symbol, kan det orsaka problem n\u00e4r du kommunicerar med n\u00e4mnda tredje parts API.<\/p>\n<p>F\u00f6r det f\u00f6rsta, om du anv\u00e4nder vackra permal\u00e4nkar, skapas dessa vanligtvis fr\u00e5n inl\u00e4ggets titel. S\u00e5 om du anv\u00e4nder n\u00e5got som All About The Acme Machine\u2122 genererar en permal\u00e4nk som inneh\u00e5ller n\u00e5got liknande.<\/p>\n<p>Till exempel kan du l\u00e5ta WordPress automatiskt generera n\u00e5got s\u00e5 h\u00e4r: <a href=\"https:\/\/acme.com\/all-about-the-acme%C2%AE-machine\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">https:\/\/acme.com\/all-about-the-acme\u00ae-machine\/<\/a><\/p>\n<p>Och n\u00e4r det \u00e4r dags att skicka den informationen till ett tredjeparts-API (eller att f\u00f6rs\u00f6ka bearbeta den med n\u00e5got som inte \u00e4r f\u00f6rberett f\u00f6r s\u00e5dana tecken) d\u00e5 kommer du att st\u00f6ta p\u00e5 problem.<\/p>\n<p>Lyckligtvis tillhandah\u00e5ller WordPress en krok som g\u00f6r att vi kan bearbeta permal\u00e4nkar innan de serialiseras till databasen. Det h\u00e4r \u00e4r <a href=\"https:\/\/codex.wordpress.org\/Plugin_API\/Filter_Reference\/wp_insert_post_data\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">n\u00e4mligen wp_insert_post_data-<\/a> kroken.<\/p>\n<p>Och i det h\u00e4r fallet fungerar det s\u00e5 h\u00e4r:<\/p>\n<ol>\n<li>St\u00e4ll in kroken f\u00f6r att avfyras sent i serialiseringsprocessen,<\/li>\n<li>Leta efter karakt\u00e4rer som kan vara problematiska,<\/li>\n<li>Ers\u00e4tt dem med en tom str\u00e4ng,<\/li>\n<li>Returnera den uppdaterade informationen till WordPress f\u00f6r serialisering.<\/li>\n<\/ol>\n<p><strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/035b213bd632d2ab9fc4a79acffa1342#file-00-processpermalink-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">H\u00e4r \u00e4r ett exempel<\/a><\/strong> som f\u00f6rs\u00f6ker ta bort olika symboler som copyright-symboler, varum\u00e4rkessymboler, registreringssymboler och andra varianter av dessa b\u00e5de i kodade format och i de kodade motsvarigheterna:<\/p>\n<pre><code>&lt;?php\nadd_action('wp_insert_post_data', __NAMESPACE__. 'processPermalink');\n\/**\n * Processes the permalink so we can remove any characters that may cause a problem when communicating\n * with the API.\n *\n * @param  array $data The array of information about the post.\n * @return array $data The data without the malformed information in the post name for the URL.\n *\/\npublic function processPermalink($data)\n{\n    if (!in_array($data['post_status'], array('draft', 'pending', 'auto-draft'))) {\n        $data['post_name'] =\n            preg_replace(\n                '\/(%ef%b8%8f|\u2122|\u00ae|\u00a9|\u2122|\u00ae|\u00a9|\u2122|\u00ae|\u00a9)\/',\n                '',\n                $data['post_name']\n            );\n    }\n    return $data;\n}\n<\/code><\/pre>\n<p>Observera att funktionen accepterar inl\u00e4ggsdata som ett argument, kontrollerar att du inte arbetar med ett utkast, en v\u00e4ntande artikel eller ett autoutkast och tar sedan bort inneh\u00e5llet i inl\u00e4ggets namn genom att<\/p>\n<p>Detta kan vara en nyanserad fr\u00e5ga. Det vill s\u00e4ga, du kanske inte kommer att st\u00f6ta p\u00e5 det i dina utvecklingsarbete. Om du \u00e5 andra sidan g\u00f6r det, s\u00e5 ger detta en l\u00f6sning som inte bara l\u00e5ter dig ta bort vissa tecken fr\u00e5n URL:en, utan ocks\u00e5 l\u00e5ter dig g\u00f6ra det i en skalbar.<\/p>\n<p>S\u00e5 n\u00e4r dina behov f\u00f6r\u00e4ndras kan du helt enkelt uppdatera <strong><a href=\"https:\/\/php.net\/manual\/en\/function.preg-replace.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">preg_replace<\/a><\/strong> -anropet med de tecken du beh\u00f6ver f\u00f6r att ta bort fr\u00e5n din URL.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Inspelningsk\u00e4lla:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>En l\u00f6sning fr\u00e5n att ta bort problematiska tecken fr\u00e5n WordPress-permal\u00e4nkar och p\u00e5 ett skalbart s\u00e4tt.<\/p>\n","protected":false},"author":1,"featured_media":164255,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[838,848,901,922,868],"tags":[1173],"class_list":["post-229871","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-guide-foer-nyboerjare","category-handledningar","category-koda","category-oevrig","category-wordpress-9","tag-affiai-sv"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/229871","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=229871"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/229871\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media\/164255"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media?parent=229871"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/categories?post=229871"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/tags?post=229871"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}