{"id":231797,"date":"2022-12-24T13:02:00","date_gmt":"2022-12-24T10:02:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=231797"},"modified":"2022-11-10T05:15:08","modified_gmt":"2022-11-10T02:15:08","slug":"utilizzo-di-filtri-personalizzati-con-codici-brevi","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/it\/utilizzo-di-filtri-personalizzati-con-codici-brevi\/","title":{"rendered":"Utilizzo di filtri personalizzati con codici brevi"},"content":{"rendered":"\n<p>Una volta compresa l&#8217; <a href=\"https:\/\/codex.wordpress.org\/Shortcode_API\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">API Shortcode<\/a> e come funzionano i <a href=\"https:\/\/tommcfarlin.com\/wordpress-hooks\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">filtri<\/a>, \u00e8 facile implementarli in WordPress.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-160133-61e705f31918c.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-160133-61e705f31918c.png\" alt=\"Utilizzo di filtri personalizzati con codici brevi\" ><\/a><\/p>\n<p>E quando sei in grado di combinare i due, puoi fare molto di pi\u00f9 del solito rispetto a quando funzionano indipendentemente l&#8217;uno dall&#8217;altro.<\/p>\n<p>In particolare, puoi filtrare i dati che si trovano nel risultato dello shortcode e questo pu\u00f2 essere particolarmente utile per altri sviluppatori. Se hai familiarit\u00e0 con l&#8217;implementazione di filtri personalizzati, farlo nel contesto di un codice breve non \u00e8 molto diverso.<\/p>\n<p>Ma se non hai mai utilizzato n\u00e9 l&#8217;API shortcode n\u00e9 la funzionalit\u00e0 prima, \u00e8 comunque facile da fare.<\/p>\n<h2>Filtri personalizzati con codici brevi<\/h2>\n<p>Per questo post, useremo un esempio relativamente artificioso. Cio\u00e8, lo shortcode risulter\u00e0 in qualcosa di statico. Il motivo \u00e8 che semplifica la dimostrazione in un post e l&#8217;implementazione nel codice.<\/p>\n<h3>Lo Shortcode<\/h3>\n<p><a href=\"https:\/\/gist.github.com\/tommcfarlin\/b264ef7e0af29b42651bf45ba50c64b2#file-00-a-simple-example-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Per implementare uno shortcode<\/a>, hai bisogno di due cose:<\/p>\n<ol>\n<li>un nome personalizzato per lo shortcode,<\/li>\n<li>una funzione che viene utilizzata per inserire informazioni ovunque venga utilizzato lo shortcode.<\/li>\n<\/ol>\n<pre><code>&lt;?php\n\nnamespace Acme;\n\nadd_shortcode('a_simple_example', __NAMESPACE__. 'aSimpleExample');\n\/**\n * Replaces [a_simple_example] short code with the text \"This is the result of an example shortcode.\"\n * whenever the shortcode is placed in a post or page.\n *\/\nfunction aSimpleExample()\n{\n  return 'This is the result of an example shortcode.';\n}<\/code><\/pre>\n<p>Nota nel codice sopra; Ho preceduto la funzione con. <code>__NAMESPACE__<\/code>Questo perch\u00e9 la funzione risiede all&#8217;interno di uno spazio dei nomi personalizzato (che puoi vedere nella parte superiore del file).<\/p>\n<p>Senza questo prefisso, la funzione non verr\u00e0 chiamata. Se si sceglie di non utilizzare gli spazi dei nomi, \u00e8 possibile rinunciare sia al prefisso che alle barre iniziali del nome della funzione.<\/p>\n<p>Tieni presente che rivisiteremo questa funzione non appena avremo il filtro in posizione.<\/p>\n<h3>Il filtro<\/h3>\n<p>L&#8217;aggiunta di un filtro personalizzato \u00e8 simile all&#8217;aggiunta di uno shortcode. Hai bisogno:<\/p>\n<ol>\n<li>un nome di filtro personalizzato,<\/li>\n<li>una funzione che viene utilizzata per filtrare le informazioni in entrata (e i filtri dovrebbero generalmente accettare almeno un parametro che \u00e8, ovviamente, i dati da filtrare):<\/li>\n<\/ol>\n<p>Per essere coerenti con l&#8217;esempio sopra, diciamo che vogliamo solo <a href=\"https:\/\/gist.github.com\/tommcfarlin\/b264ef7e0af29b42651bf45ba50c64b2#file-01-a-simple-filter-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">sostituire alcune parole nello shortcode<\/a> :<\/p>\n<pre><code>&lt;?php\n\nnamespace Acme;\n\nadd_filter('custom_shortcode_example', __NAMESPACE__. 'aSimpleShortcodeFilter');\n\/**\n * Replaces [a simple example] short code with the text \"This is the result of an example shortcode.\"\n * whenever the shortcode is placed in a post or page.\n *\n * @param string $input the input to filter.\n *\n * @return string       the result of the filter running on the input\n *\/\nfunction aSimpleShortcodeFilter(string $input): string\n{\n  return str_ireplace(\n    'an example shortcode.',\n    'a filtered shortcode',\n    $input\n  );\n}<\/code><\/pre>\n<p>Questo sostituir\u00e0 il contenuto di:<\/p>\n<p>Questo \u00e8 il risultato di uno shortcode di esempio.<\/p>\n<p>Per:<\/p>\n<p>Questo \u00e8 il risultato di uno shortcode filtrato.<\/p>\n<p>Ma dobbiamo ancora legarli insieme.<\/p>\n<h2>Rivisitazione dello Shortcode<\/h2>\n<p>Per associare le due funzioni insieme, dobbiamo assicurarci che la funzione per lo shortcode applichi il filtro al valore che restituisce.<\/p>\n<p>Fortunatamente, <a href=\"https:\/\/gist.github.com\/tommcfarlin\/b264ef7e0af29b42651bf45ba50c64b2#file-02-a-filtered-shortcode-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">implementarlo \u00e8 semplice<\/a> soprattutto perch\u00e9 abbiamo tutto ci\u00f2 di cui abbiamo bisogno:<\/p>\n<pre><code>&lt;?php\n\nnamespace Acme;\n\nadd_shortcode('a_simple_example', __NAMESPACE__. 'aSimpleExample');\n\/**\n * Replaces [a_simple_example] short code with the text \"This is the result of an example shortcode.\"\n * whenever the shortcode is placed in a post or page.\n *\/\nfunction aSimpleExample()\n{\n  return apply_filters('custom_shortcode_example', 'This is the result of an example shortcode.');\n}\n<\/code><\/pre>\n<p>In un esempio pi\u00f9 concreto, consiglio sempre di verificare che il risultato del parametro non sia vuoto, che contenga la stringa che sto cercando o qualcosa di simile.<\/p>\n<p>Cio\u00e8, mi piace spesso aprire con una clausola di guardia. Se il test fallisce, restituisco semplicemente il valore in entrata; in caso contrario, filtrer\u00f2 i dati e restituir\u00f2 qualunque sia il risultato di tale operazione.<\/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>Anche se non hai mai utilizzato n\u00e9 l&#8217;API n\u00e9 la funzionalit\u00e0 prima, \u00e8 facile iniziare a implementare filtri personalizzati con codici brevi.<\/p>\n","protected":false},"author":1,"featured_media":235705,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[896,804,720,865],"tags":[1168],"class_list":["post-231797","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-codice","category-php-6","category-sviluppatore","category-wordpress-6","tag-affiai-it"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/231797","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=231797"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/231797\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media\/235705"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media?parent=231797"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/categories?post=231797"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/tags?post=231797"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}