{"id":230474,"date":"2022-11-26T20:12:00","date_gmt":"2022-11-26T17:12:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=230474"},"modified":"2022-11-09T22:33:15","modified_gmt":"2022-11-09T19:33:15","slug":"kuinka-poistaa-erikoismerkit-pysyvistae-linkeistae","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fi\/kuinka-poistaa-erikoismerkit-pysyvistae-linkeistae\/","title":{"rendered":"Kuinka poistaa erikoismerkit pysyvist\u00e4 linkeist\u00e4"},"content":{"rendered":"\n<p>Aina kun ty\u00f6skentelet WordPressin ja kolmannen osapuolen sovellusliittymien kanssa, on aina mahdollista, ett\u00e4 kohtaat ongelmia, joissa kolmannen osapuolen API ei ole valmis k\u00e4sittelem\u00e4\u00e4n tiettyj\u00e4 pysyv\u00e4ss\u00e4 linkiss\u00e4 olevia merkkej\u00e4.<\/p>\n<p>Permalink-asetuksista riippuen t\u00e4m\u00e4 voi kuitenkin olla ongelma tai ei. Voit esimerkiksi asettaa pysyv\u00e4t linkit arvoon <strong>?p=123<\/strong> jokaiselle viestille. Siin\u00e4 tapauksessa se ei ole suuri ongelma.<\/p>\n<p>Mutta jos k\u00e4yt\u00e4t &quot;kauniita pysyvi\u00e4 linkkej\u00e4&quot; ja pysyv\u00e4 linkkisi sis\u00e4lt\u00e4\u00e4 esimerkiksi tavaramerkkisymbolin tai tekij\u00e4noikeussymbolin, se voi aiheuttaa ongelmia aina, kun olet yhteydess\u00e4 kolmannen osapuolen sovellusliittym\u00e4\u00e4n.<\/p>\n<p>Ensinn\u00e4kin, jos k\u00e4yt\u00e4t kauniita pysyvi\u00e4 linkkej\u00e4, ne luodaan yleens\u00e4 viestin otsikosta. Joten jos k\u00e4yt\u00e4t jotain, kuten All About The Acme Machine\u2122, luo pysyv\u00e4n linkin, joka sis\u00e4lt\u00e4\u00e4 jotain sellaista.<\/p>\n<p>Saatat esimerkiksi asettaa WordPressin luomaan automaattisesti jotain t\u00e4llaista: <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>Ja kun on aika l\u00e4hett\u00e4\u00e4 tiedot kolmannen osapuolen API:lle (tai yritt\u00e4\u00e4 k\u00e4sitell\u00e4 niit\u00e4 k\u00e4ytt\u00e4m\u00e4ll\u00e4 jotain, jota ei ole valmisteltu t\u00e4llaisille merkeille), joudut vaikeuksiin.<\/p>\n<p>Onneksi WordPress tarjoaa koukun, jonka avulla voimme k\u00e4sitell\u00e4 pysyvi\u00e4 linkkej\u00e4 ennen kuin ne sarjotetaan tietokantaan. Nimitt\u00e4in t\u00e4m\u00e4 on <a href=\"https:\/\/codex.wordpress.org\/Plugin_API\/Filter_Reference\/wp_insert_post_data\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">wp_insert_post_data-<\/a> koukku.<\/p>\n<p>Ja t\u00e4ss\u00e4 tapauksessa se toimii n\u00e4in:<\/p>\n<ol>\n<li>Aseta koukku laukeamaan sarjoitusprosessin my\u00f6h\u00e4ss\u00e4,<\/li>\n<li>Etsi hahmoja, jotka voivat olla ongelmallisia,<\/li>\n<li>Korvaa ne tyhj\u00e4ll\u00e4 merkkijonolla,<\/li>\n<li>Palauta p\u00e4ivitetyt tiedot WordPressiin sarjoittamista varten.<\/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\">T\u00e4ss\u00e4 on esimerkki<\/a><\/strong>, joka pyrkii poistamaan erilaisia \u200b\u200bsymboleja, kuten tekij\u00e4noikeussymbolit, tavaramerkkisymbolit, rekister\u00f6intimerkit ja muut niiden muunnelmat sek\u00e4 koodatuissa muodoissa ett\u00e4 koodatuissa vastineissa:<\/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>Huomaa, ett\u00e4 funktio hyv\u00e4ksyy viestitiedot argumenttina, varmistaa, ett\u00e4 et ty\u00f6skentele luonnoksen, odottavan artikkelin tai automaattisen luonnoksen kanssa, ja poistaa sitten sis\u00e4ll\u00f6n viestin nimest\u00e4<\/p>\n<p>T\u00e4m\u00e4 voi olla vivahteikas ongelma. Eli ehk\u00e4 et kohtaa sit\u00e4 kehitysty\u00f6ss\u00e4si. Jos toisaalta teet niin, t\u00e4m\u00e4 tarjoaa ratkaisun, jonka avulla voit paitsi poistaa tiettyj\u00e4 merkkej\u00e4 URL-osoitteesta, my\u00f6s sen avulla voit tehd\u00e4 sen skaalautuvassa muodossa.<\/p>\n<p>Joten tarpeidesi muuttuessa voit yksinkertaisesti p\u00e4ivitt\u00e4\u00e4 <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> &#8211; kutsun merkeill\u00e4, jotka sinun on poistettava URL-osoitteestasi.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ratkaisu ongelmallisten merkkien poistamiseen WordPressin pysyvist\u00e4 linkeist\u00e4 ja skaalautuvalla tavalla.<\/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":[895,917,834,843,864],"tags":[1166],"class_list":["post-230474","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-koodi","category-muut","category-opas-aloittelijoille","category-opetusohjelmia","category-wordpress-5","tag-affiai-fi"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/230474","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/comments?post=230474"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/230474\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media\/164255"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media?parent=230474"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/categories?post=230474"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/tags?post=230474"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}