{"id":231604,"date":"2022-12-24T12:33:00","date_gmt":"2022-12-24T09:33:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=231604"},"modified":"2022-12-07T10:58:44","modified_gmt":"2022-12-07T07:58:44","slug":"mukautettujen-suodattimien-kaeyttaeminen-lyhytkoodien-kanssa","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fi\/mukautettujen-suodattimien-kaeyttaeminen-lyhytkoodien-kanssa\/","title":{"rendered":"Mukautettujen suodattimien k\u00e4ytt\u00e4minen lyhytkoodien kanssa"},"content":{"rendered":"\n<p>Kun ymm\u00e4rr\u00e4t <a href=\"https:\/\/codex.wordpress.org\/Shortcode_API\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Shortcode API<\/a> :n ja <a href=\"https:\/\/tommcfarlin.com\/wordpress-hooks\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">suodattimien<\/a> toiminnan, on helppo ottaa ne k\u00e4ytt\u00f6\u00f6n WordPressiss\u00e4.<\/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=\"Mukautettujen suodattimien k\u00e4ytt\u00e4minen lyhytkoodien kanssa\" ><\/a><\/p>\n<p>Ja kun pystyt yhdist\u00e4m\u00e4\u00e4n n\u00e4m\u00e4 kaksi, voit tehd\u00e4 paljon enemm\u00e4n kuin tavallisesti kuin silloin, kun ne toimivat toisistaan \u200b\u200briippumatta.<\/p>\n<p>Erityisesti voit suodattaa tietoja, jotka ovat lyhytkoodin tuloksena, ja t\u00e4m\u00e4 voi olla erityisen hy\u00f6dyllist\u00e4 muille kehitt\u00e4jille. Jos olet perehtynyt mukautettujen suodattimien k\u00e4ytt\u00f6\u00f6n, sen tekeminen lyhyen koodin yhteydess\u00e4 ei ole paljon erilaista.<\/p>\n<p>Mutta jos et ole koskaan aiemmin k\u00e4ytt\u00e4nyt joko lyhytkoodisovellusliittym\u00e4\u00e4 tai toimintoja, se on silti helppo tehd\u00e4.<\/p>\n<h2>Mukautetut suodattimet lyhytkoodeilla<\/h2>\n<p>T\u00e4ss\u00e4 viestiss\u00e4 k\u00e4yt\u00e4mme suhteellisen keksitty\u00e4 esimerkki\u00e4. Eli lyhytkoodi johtaa johonkin staattiseen. Syyn\u00e4 on, ett\u00e4 sen avulla on helppo demonstroida viestiss\u00e4 ja ottaa se k\u00e4ytt\u00f6\u00f6n koodissasi.<\/p>\n<h3>Lyhytkoodi<\/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\">Lyhytkoodin k\u00e4ytt\u00f6\u00f6nottamiseksi<\/a> tarvitset kaksi asiaa:<\/p>\n<ol>\n<li>mukautettu nimi lyhytkoodille,<\/li>\n<li>toiminto, jota k\u00e4ytet\u00e4\u00e4n pudottamaan tietoja sinne, miss\u00e4 lyhytkoodia k\u00e4ytet\u00e4\u00e4n.<\/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>Huomaa yll\u00e4 olevassa koodissa; Olen lis\u00e4nnyt funktion etuliitteen kanssa. <code>__NAMESPACE__<\/code>T\u00e4m\u00e4 johtuu siit\u00e4, ett\u00e4 funktio sijaitsee mukautetussa nimiavaruudessa (jonka n\u00e4et tiedoston yl\u00e4osassa).<\/p>\n<p>Ilman t\u00e4t\u00e4 etuliitett\u00e4 funktiota ei kutsuta. Jos p\u00e4\u00e4t\u00e4t olla k\u00e4ytt\u00e4m\u00e4tt\u00e4 nimiavaruuksia, voit j\u00e4tt\u00e4\u00e4 k\u00e4ytt\u00e4m\u00e4tt\u00e4 sek\u00e4 etuliitett\u00e4 ett\u00e4 funktion nimen alkuviivaa.<\/p>\n<p>Huomaa, ett\u00e4 palaamme t\u00e4h\u00e4n toimintoon heti, kun saamme suodattimen paikalleen.<\/p>\n<h3>Suodatin<\/h3>\n<p>Mukautetun suodattimen lis\u00e4\u00e4minen on samanlaista kuin lyhytkoodin lis\u00e4\u00e4minen. Tarvitset:<\/p>\n<ol>\n<li>mukautettu suodattimen nimi,<\/li>\n<li>toiminto, jota k\u00e4ytet\u00e4\u00e4n suodattamaan saapuvat tiedot (ja suodattimien tulisi yleens\u00e4 hyv\u00e4ksy\u00e4 v\u00e4hint\u00e4\u00e4n yksi parametri, joka on tietysti suodatettava data):<\/li>\n<\/ol>\n<p>Yll\u00e4 olevan esimerkin noudattamiseksi sanotaan, ett\u00e4 haluamme vain <a href=\"https:\/\/gist.github.com\/tommcfarlin\/b264ef7e0af29b42651bf45ba50c64b2#file-01-a-simple-filter-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">korvata muutaman sanan lyhytkoodissa<\/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>T\u00e4m\u00e4 korvaa seuraavan sis\u00e4ll\u00f6n:<\/p>\n<p>T\u00e4m\u00e4 on tulosta esimerkkilyhytkoodista.<\/p>\n<p>Vastaanottaja:<\/p>\n<p>T\u00e4m\u00e4 on seurausta suodatetusta lyhytkoodista.<\/p>\n<p>Mutta meid\u00e4n on silti yhdistett\u00e4v\u00e4 ne kaksi.<\/p>\n<h2>Lyhytkoodin uudelleenk\u00e4ynti<\/h2>\n<p>Jotta n\u00e4m\u00e4 kaksi funktiota voidaan yhdist\u00e4\u00e4, meid\u00e4n on varmistettava, ett\u00e4 lyhytkoodin funktio k\u00e4ytt\u00e4\u00e4 suodatinta palauttamaansa arvoon.<\/p>\n<p>Onneksi <a href=\"https:\/\/gist.github.com\/tommcfarlin\/b264ef7e0af29b42651bf45ba50c64b2#file-02-a-filtered-shortcode-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">sen toteuttaminen on yksinkertaista<\/a>, varsinkin kun meill\u00e4 on kaikki mit\u00e4 tarvitsemme:<\/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>Konkreettisemmassa esimerkiss\u00e4 suosittelen aina tarkistamaan, ettei parametrin tulos ole tyhj\u00e4, ett\u00e4 se sis\u00e4lt\u00e4\u00e4 etsim\u00e4ni merkkijonon tai jotain vastaavaa.<\/p>\n<p>Eli tykk\u00e4\u00e4n usein avata vartiolausekkeella. Jos testi ep\u00e4onnistuu, palautan vain saapuvan arvon; Muussa tapauksessa suodatan tiedot ja palautan toiminnon tuloksen.<\/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>Vaikka et olisi koskaan aiemmin k\u00e4ytt\u00e4nyt APIa tai toimintoja, on helppo aloittaa mukautettujen suodattimien k\u00e4ytt\u00f6\u00f6notto lyhytkoodeilla.<\/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":[719,895,803,864],"tags":[1166],"class_list":["post-231604","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-kehittaejae","category-koodi","category-php-5","category-wordpress-5","tag-affiai-fi"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/231604","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=231604"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/231604\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media\/235705"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media?parent=231604"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/categories?post=231604"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/tags?post=231604"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}