{"id":231002,"date":"2022-12-24T13:27:00","date_gmt":"2022-12-24T10:27:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=231002"},"modified":"2022-12-07T10:58:49","modified_gmt":"2022-12-07T07:58:49","slug":"anvaenda-anpassade-filter-med-kortkoder","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/sv\/anvaenda-anpassade-filter-med-kortkoder\/","title":{"rendered":"Anv\u00e4nda anpassade filter med kortkoder"},"content":{"rendered":"\n<p>N\u00e4r du v\u00e4l f\u00f6rst\u00e5r <a href=\"https:\/\/codex.wordpress.org\/Shortcode_API\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Shortcode API<\/a> och hur <a href=\"https:\/\/tommcfarlin.com\/wordpress-hooks\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">filter<\/a> fungerar \u00e4r det enkelt att implementera dem i 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=\"Anv\u00e4nda anpassade filter med kortkoder\" ><\/a><\/p>\n<p>Och n\u00e4r du kan blanda de tv\u00e5 kan du g\u00f6ra mycket mer \u00e4n vanligt \u00e4n n\u00e4r de fungerar oberoende av varandra.<\/p>\n<p>Specifikt kan du filtrera data som finns i resultatet av kortkoden, och detta kan vara s\u00e4rskilt anv\u00e4ndbart f\u00f6r andra utvecklare. Om du \u00e4r bekant med att implementera anpassade filter \u00e4r det inte mycket annorlunda att g\u00f6ra detta inom ramen f\u00f6r en kort kod.<\/p>\n<p>Men om du aldrig har anv\u00e4nt vare sig shortcode API eller funktionaliteten tidigare, \u00e4r det fortfarande enkelt att g\u00f6ra.<\/p>\n<h2>Anpassade filter med kortkoder<\/h2>\n<p>F\u00f6r det h\u00e4r inl\u00e4gget kommer vi att anv\u00e4nda ett relativt konstruerat exempel. Det vill s\u00e4ga, kortkoden kommer att resultera i n\u00e5got statiskt. Anledningen \u00e4r att det g\u00f6r det enkelt att demonstrera i ett inl\u00e4gg och implementera i din kod.<\/p>\n<h3>Kortkoden<\/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\">F\u00f6r att implementera en kortkod<\/a> beh\u00f6ver du tv\u00e5 saker:<\/p>\n<ol>\n<li>ett anpassat namn f\u00f6r kortkoden,<\/li>\n<li>en funktion som anv\u00e4nds f\u00f6r att sl\u00e4ppa information varhelst kortkoden anv\u00e4nds.<\/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>Notera i koden ovan; Jag har prefixet funktionen med. <code>__NAMESPACE__<\/code>Detta beror p\u00e5 att funktionen finns inom ett anpassat namnomr\u00e5de (som du kan se \u00f6verst i filen).<\/p>\n<p>Utan detta prefix kommer funktionen inte att anropas. Om du v\u00e4ljer att inte anv\u00e4nda namnutrymmen kan du avst\u00e5 fr\u00e5n b\u00e5de prefixet och de inledande snedstrecket i ditt funktionsnamn.<\/p>\n<p>Observera att vi \u00e5terkommer till den h\u00e4r funktionen s\u00e5 snart vi har filtret p\u00e5 plats.<\/p>\n<h3>Filtret<\/h3>\n<p>Att l\u00e4gga till ett anpassat filter liknar att l\u00e4gga till en kortkod. Du beh\u00f6ver:<\/p>\n<ol>\n<li>ett anpassat filternamn,<\/li>\n<li>en funktion som anv\u00e4nds f\u00f6r att filtrera den inkommande informationen (och filter b\u00f6r generellt acceptera minst en parameter som naturligtvis \u00e4r data som ska filtreras):<\/li>\n<\/ol>\n<p>F\u00f6r att h\u00e5lla \u00f6verensst\u00e4mmelse med exemplet ovan l\u00e5t oss s\u00e4ga att vi bara vill <a href=\"https:\/\/gist.github.com\/tommcfarlin\/b264ef7e0af29b42651bf45ba50c64b2#file-01-a-simple-filter-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">byta ut n\u00e5gra ord i kortkoden<\/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>Detta kommer att ers\u00e4tta inneh\u00e5llet i:<\/p>\n<p>Detta \u00e4r resultatet av en exempelkortkod.<\/p>\n<p>Till:<\/p>\n<p>Detta \u00e4r resultatet av en filtrerad kortkod.<\/p>\n<p>Men vi m\u00e5ste fortfarande knyta ihop dem tv\u00e5.<\/p>\n<h2>\u00c5terbes\u00f6ker kortkoden<\/h2>\n<p>F\u00f6r att associera de tv\u00e5 funktionerna tillsammans m\u00e5ste vi se till att funktionen f\u00f6r kortkoden till\u00e4mpar filtret p\u00e5 v\u00e4rdet som det returnerar.<\/p>\n<p>Lyckligtvis \u00e4r <a href=\"https:\/\/gist.github.com\/tommcfarlin\/b264ef7e0af29b42651bf45ba50c64b2#file-02-a-filtered-shortcode-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">det enkelt att implementera det<\/a>, s\u00e4rskilt eftersom vi har allt vi beh\u00f6ver:<\/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>I ett mest konkret exempel rekommenderar jag alltid att kontrollera att resultatet av parametern inte \u00e4r tomt, att den inneh\u00e5ller str\u00e4ngen som jag letar efter, eller n\u00e5got liknande.<\/p>\n<p>Det vill s\u00e4ga, jag gillar ofta att \u00f6ppna med en vaktklausul. Om testet misslyckas returnerar jag bara det inkommande v\u00e4rdet; Annars filtrerar jag data och returnerar resultatet av den operationen.<\/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>\u00c4ven om du aldrig har anv\u00e4nt varken API eller funktionaliteten tidigare, \u00e4r det l\u00e4tt att b\u00f6rja implementera anpassade filter med kortkoder.<\/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":[901,807,724,868],"tags":[1173],"class_list":["post-231002","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-koda","category-php-9","category-utvecklaren","category-wordpress-9","tag-affiai-sv"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/231002","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=231002"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/231002\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media\/235705"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media?parent=231002"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/categories?post=231002"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/tags?post=231002"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}