{"id":230964,"date":"2022-12-24T12:33:00","date_gmt":"2022-12-24T09:33:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=230964"},"modified":"2022-12-07T10:58:46","modified_gmt":"2022-12-07T07:58:46","slug":"uzywanie-niestandardowych-filtrow-z-skrotami","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/pl\/uzywanie-niestandardowych-filtrow-z-skrotami\/","title":{"rendered":"U\u017cywanie niestandardowych filtr\u00f3w z skr\u00f3tami"},"content":{"rendered":"\n<p>Gdy zrozumiesz <a href=\"https:\/\/codex.wordpress.org\/Shortcode_API\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">interfejs Shortcode API<\/a> i spos\u00f3b dzia\u0142ania <a href=\"https:\/\/tommcfarlin.com\/wordpress-hooks\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">filtr\u00f3w<\/a>, zaimplementujesz je w WordPressie.<\/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=\"U\u017cywanie niestandardowych filtr\u00f3w z skr\u00f3tami\" ><\/a><\/p>\n<p>A kiedy jeste\u015b w stanie zmiesza\u0107 te dwa, mo\u017cesz zrobi\u0107 znacznie wi\u0119cej ni\u017c zwykle, ni\u017c gdy dzia\u0142aj\u0105 niezale\u017cnie od siebie.<\/p>\n<p>W szczeg\u00f3lno\u015bci mo\u017cesz filtrowa\u0107 dane, kt\u00f3re s\u0105 wynikiem skr\u00f3conego kodu, co mo\u017ce by\u0107 szczeg\u00f3lnie przydatne dla innych programist\u00f3w. Je\u015bli jeste\u015b zaznajomiony z implementacj\u0105 filtr\u00f3w niestandardowych, robienie tego w kontek\u015bcie kr\u00f3tkiego kodu nie r\u00f3\u017cni si\u0119 zbytnio.<\/p>\n<p>Ale je\u015bli nigdy wcze\u015bniej nie korzysta\u0142e\u015b z interfejsu API shortcode ani funkcji, nadal jest to \u0142atwe.<\/p>\n<h2>Filtry niestandardowe ze skr\u00f3tami<\/h2>\n<p>W tym po\u015bcie u\u017cyjemy stosunkowo wymy\u015blnego przyk\u0142adu. Oznacza to, \u017ce kr\u00f3tki kod spowoduje co\u015b statycznego. Powodem jest to, \u017ce u\u0142atwia zademonstrowanie w po\u015bcie i zaimplementowanie w kodzie.<\/p>\n<h3>Kr\u00f3tki kod<\/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\">Aby zaimplementowa\u0107 shortcode<\/a>, potrzebujesz dw\u00f3ch rzeczy:<\/p>\n<ol>\n<li>niestandardowa nazwa shortcode,<\/li>\n<li>funkcja, kt\u00f3ra s\u0142u\u017cy do wrzucania informacji do miejsca, w kt\u00f3rym u\u017cywany jest kr\u00f3tki kod.<\/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>Uwaga w powy\u017cszym kodzie; Poprzedzi\u0142em funkcj\u0119 przedrostkiem. <code>__NAMESPACE__<\/code>Dzieje si\u0119 tak, poniewa\u017c funkcja znajduje si\u0119 w niestandardowej przestrzeni nazw (kt\u00f3r\u0105 mo\u017cna zobaczy\u0107 na g\u00f3rze pliku).<\/p>\n<p>Bez tego prefiksu funkcja nie zostanie wywo\u0142ana. Je\u015bli zdecydujesz si\u0119 nie u\u017cywa\u0107 przestrzeni nazw, mo\u017cesz zrezygnowa\u0107 zar\u00f3wno z prefiksu, jak i wiod\u0105cych uko\u015bnik\u00f3w nazwy funkcji.<\/p>\n<p>Pami\u0119taj, \u017ce powr\u00f3cimy do tej funkcji, gdy tylko zainstalujemy filtr.<\/p>\n<h3>Filtr<\/h3>\n<p>Dodanie niestandardowego filtra jest podobne do dodawania kr\u00f3tkiego kodu. Potrzebujesz:<\/p>\n<ol>\n<li>niestandardowa nazwa filtra,<\/li>\n<li>funkcja, kt\u00f3ra s\u0142u\u017cy do filtrowania przychodz\u0105cych informacji (a filtry powinny generalnie akceptowa\u0107 przynajmniej jeden parametr, kt\u00f3rym s\u0105 oczywi\u015bcie dane do filtrowania):<\/li>\n<\/ol>\n<p>Aby zachowa\u0107 sp\u00f3jno\u015b\u0107 z powy\u017cszym przyk\u0142adem, powiedzmy, \u017ce chcemy tylko <a href=\"https:\/\/gist.github.com\/tommcfarlin\/b264ef7e0af29b42651bf45ba50c64b2#file-01-a-simple-filter-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">zast\u0105pi\u0107 kilka s\u0142\u00f3w w 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>Zast\u0105pi to zawarto\u015b\u0107:<\/p>\n<p>To jest wynik przyk\u0142adowego shortcode.<\/p>\n<p>Do:<\/p>\n<p>To jest wynik przefiltrowanego shortcode.<\/p>\n<p>Ale nadal musimy zwi\u0105za\u0107 ich dwoje razem.<\/p>\n<h2>Ponowne odwiedzanie Shortcode<\/h2>\n<p>Aby powi\u0105za\u0107 te dwie funkcje ze sob\u0105, musimy upewni\u0107 si\u0119, \u017ce funkcja dla kr\u00f3tkiego kodu stosuje filtr do warto\u015bci, kt\u00f3r\u0105 zwraca.<\/p>\n<p>Na szcz\u0119\u015bcie <a href=\"https:\/\/gist.github.com\/tommcfarlin\/b264ef7e0af29b42651bf45ba50c64b2#file-02-a-filtered-shortcode-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">wdro\u017cenie go jest proste<\/a> zw\u0142aszcza, \u017ce \u200b\u200bmamy wszystko, czego potrzebujemy:<\/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>W najbardziej konkretnym przyk\u0142adzie zawsze zalecam sprawdzenie, czy wynik parametru nie jest pusty, czy zawiera ci\u0105g, kt\u00f3rego szukam, lub co\u015b podobnego.<\/p>\n<p>Oznacza to, \u017ce cz\u0119sto lubi\u0119 otwiera\u0107 klauzul\u0105 \u200b\u200bochronn\u0105. Je\u015bli test si\u0119 nie powiedzie, po prostu zwracam przychodz\u0105c\u0105 warto\u015b\u0107; w przeciwnym razie przefiltruj\u0119 dane i zwr\u00f3c\u0119 jakikolwiek wynik tej operacji.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">\u0179r\u00f3d\u0142o nagrywania:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Nawet je\u015bli nigdy wcze\u015bniej nie korzysta\u0142e\u015b z interfejsu API ani funkcji, \u0142atwo jest rozpocz\u0105\u0107 wdra\u017canie niestandardowych filtr\u00f3w za pomoc\u0105 skr\u00f3t\u00f3w.<\/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":[721,897,805,866],"tags":[1169],"class_list":["post-230964","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-deweloper","category-kod","category-php-7","category-wordpress-7","tag-affiai-pl"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts\/230964","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/comments?post=230964"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts\/230964\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/media\/235705"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/media?parent=230964"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/categories?post=230964"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/tags?post=230964"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}