{"id":230611,"date":"2022-11-26T19:28:00","date_gmt":"2022-11-26T16:28:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=230611"},"modified":"2022-11-09T23:12:16","modified_gmt":"2022-11-09T20:12:16","slug":"come-rimuovere-caratteri-speciali-dai-permalink","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/it\/come-rimuovere-caratteri-speciali-dai-permalink\/","title":{"rendered":"Come rimuovere caratteri speciali dai permalink"},"content":{"rendered":"\n<p>Ogni volta che lavori con WordPress e API di terze parti, c&#8217;\u00e8 sempre la possibilit\u00e0 che ti imbatti in problemi in cui l&#8217;API di terze parti non \u00e8 pronta a gestire determinati caratteri che esistono in un permalink.<\/p>\n<p>A seconda delle impostazioni del permalink, tuttavia, questo potrebbe essere o meno un problema. Ad esempio, potresti avere i tuoi permalink impostati su qualcosa come <strong>?p=123<\/strong> per ogni post. In tal caso, non \u00e8 un gran problema.<\/p>\n<p>Ma se stai usando &quot;permalink graziosi&quot; e il tuo permalink include qualcosa come un simbolo di marchio o un simbolo di copyright, potrebbe causare problemi ogni volta che comunichi con detta API di terze parti.<\/p>\n<p>Innanzitutto, se stai usando dei permalink graziosi, questi sono generalmente creati dal titolo del post. Quindi, se usi qualcosa come All About The Acme Machine\u2122 generer\u00e0 un permalink che include qualcosa del genere.<\/p>\n<p>Ad esempio, potresti fare in modo che WordPress generi automaticamente qualcosa del genere: <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>E quando arriva il momento di inviare tali informazioni a un&#8217;API di terze parti (o di provare a elaborarle utilizzando qualcosa che non \u00e8 preparato per tali personaggi), allora ti imbatterai in problemi.<\/p>\n<p>Fortunatamente, WordPress fornisce un hook che ci consente di elaborare i permalink prima che vengano serializzati nel database. Vale a dire, questo \u00e8 l&#8217; hook <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>.<\/p>\n<p>E in questo caso funziona cos\u00ec:<\/p>\n<ol>\n<li>Imposta l&#8217;hook in modo che si attivi alla fine del processo di serializzazione,<\/li>\n<li>Cerca i personaggi che potrebbero essere problematici,<\/li>\n<li>Sostituiscili con una stringa vuota,<\/li>\n<li>Restituire le informazioni aggiornate a WordPress per la serializzazione.<\/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\">Ecco un esempio<\/a><\/strong> che cerca di rimuovere vari simboli come simboli di copyright, simboli di marchi, simboli di registrazione e altre loro varianti sia nei formati codificati che negli equivalenti codificati:<\/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>Nota che la funzione accetta i dati del post come argomento, controlla che tu non stia lavorando con una bozza, un articolo in sospeso o una bozza automatica, quindi rimuove i contenuti nel nome del post per<\/p>\n<p>Questo potrebbe essere un problema sfumato. Cio\u00e8, forse non lo incontrerai nei tuoi sforzi di sviluppo. Se, d&#8217;altra parte, lo fai, questo fornisce una soluzione che non solo ti consente di rimuovere determinati caratteri dall&#8217;URL, ma ti consente anche di farlo in modo scalabile.<\/p>\n<p>Quindi, quando le tue esigenze cambiano, puoi semplicemente aggiornare la chiamata <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> con i caratteri che devi rimuovere dal tuo URL.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fonte di registrazione:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Una soluzione per rimuovere i caratteri problematici dai permalink di WordPress e in modo scalabile.<\/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":[918,896,835,844,865],"tags":[1168],"class_list":["post-230611","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-altro","category-codice","category-guida-per-principianti","category-tutorial","category-wordpress-6","tag-affiai-it"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/230611","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/comments?post=230611"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/230611\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media\/164255"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media?parent=230611"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/categories?post=230611"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/tags?post=230611"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}