{"id":3741,"date":"2016-07-04T14:50:18","date_gmt":"2016-07-04T17:50:18","guid":{"rendered":"https:\/\/www.mxcursos.com\/blog\/?p=3741"},"modified":"2019-03-16T03:00:53","modified_gmt":"2019-03-16T06:00:53","slug":"entendendo-e-utilizando-filters-filtros-no-wordpress","status":"publish","type":"post","link":"https:\/\/www.mxcursos.com\/blog\/entendendo-e-utilizando-filters-filtros-no-wordpress\/","title":{"rendered":"Entendendo e utilizando filters ( Filtros ) no WordPress"},"content":{"rendered":"<p>Um dos grandes atrativos em adotar o WordPress \u00e9 possibilidade de customizar\u00a0\u00a0informa\u00e7\u00f5es ou execu\u00e7\u00e3o de a\u00e7\u00f5es sem precisar mexer no\u00a0c\u00f3digo que voc\u00ea definiu, oferecendo\u00a0uma liberdade para quem for utiliz\u00e1-lo, implementando assim suas op\u00e7\u00f5es.<\/p>\n<p>Muitas vezes voc\u00ea precisa definir valores padr\u00f5es e que possam ser personalizados como valores de atributos e textos em partes do seu tema ou plugin.<\/p>\n<p>Um recurso bem interessante do WordPress s\u00e3o os filters, que permitem que voc\u00ea\u00a0consiga\u00a0definir valores que\u00a0podem ser alterados.<\/p>\n<p>Eles s\u00e3o semelhantes\u00a0aos actions (ganchos), mas a diferen\u00e7a entre os dois \u00e9 que as actions servem para executar a\u00e7\u00f5es personalizadas e os filters para alterar valores predefinidos. Se deseja aprender mais sobre as actions,\u00a0voc\u00ea pode ler este\u00a0<a href=\"https:\/\/www.mxcursos.com\/blog\/entendendo-e-utilizando-as-actions-ganchos-no-wordpress\/\" target=\"_blank\" rel=\"noopener noreferrer\">artigo<\/a>\u00a0aqui\u00a0do blog.<\/p>\n<p>Para definir um filter, voc\u00ea \u00a0utilizar\u00e1 fun\u00e7\u00e3o\u00a0<a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/apply_filters\/\" target=\"_blank\" rel=\"noopener\">apply_filters<\/a>. Voc\u00ea\u00a0definir\u00e1 o nome\u00a0do filtro a ser chamado, o valor padr\u00e3o, e par\u00e2metros opcionais.<\/p>\n<pre class=\"lang:php decode:true \">apply_filters(NOME_DO_FILTRO, VALOR_PADR\u00c3O);<\/pre>\n<p>E para\u00a0utilizar\u00a0o filter (filtro), voc\u00ea utilizar\u00e1 a fun\u00e7\u00e3o <a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/add_filter\/\" target=\"_blank\" rel=\"noopener noreferrer\">add_filter<\/a>. Voc\u00ea definir\u00e1 em qual filtro voc\u00ea ir\u00e1 executar a fun\u00e7\u00e3o, o nome da fun\u00e7\u00e3o, a prioridade de execu\u00e7\u00e3o (opcional) e quantidade de par\u00e2metros que ter\u00e1 essa fun\u00e7\u00e3o (opcional).<\/p>\n<pre class=\"lang:default decode:true\">add_filter(NOME_DO_FILTRO, NOME_DA_FUN\u00c7\u00c3O);<\/pre>\n<h2>Veremos na pr\u00e1tica<\/h2>\n<p>Voc\u00ea est\u00e1 criando um tema voltado para catalogo online. Nesse catalogo, voc\u00ea define um link onde informa um texto <em>&#8221; Veja o produto&#8221;<\/em>.<\/p>\n<pre class=\"lang:default decode:true\">&lt;a href=\"&lt;?php the_permalink()?&gt;\"&gt;Veja o Produto&lt;\/a&gt;<\/pre>\n<p>Voc\u00ea quer dar op\u00e7\u00e3o pra quem for usar o tema como <a href=\"https:\/\/codex.wordpress.org\/pt-br:Temas_Filhos\" target=\"_blank\" rel=\"noopener\">tema filho<\/a>, por exemplo, para que o usu\u00e1rio\u00a0possa alterar esse texto, &#8211;\u00a0pois\u00a0a pessoa pode utilizar de outra forma. \u00a0Ao inv\u00e9s de Veja o produto, &#8220;Veja\u00a0o Catalogo&#8221; ou at\u00e9 mesmo outros\u00a0nomes.<\/p>\n<p>Ent\u00e3o, vamos criar filtro em cima de disso.<\/p>\n<pre class=\"lang:php decode:true\">&lt;a href=\"&lt;?php the_permalink()?&gt;\"&gt;&lt;?php echo apply_filters ('the_link_catalog' , 'Veja o Produto' )?&gt;&lt;\/a&gt;\r\n<\/pre>\n<p>Pronto, aplicamos o filtro, demos o nome dele de <em>the_link_catalog<\/em>, e definimos um valor padr\u00e3o, que \u00e9 <em>&#8220;Veja o Produto&#8221;<\/em>.<\/p>\n<p>Para\u00a0realizar essa altera\u00e7\u00e3o, basta adicionar no <em>functions.php<\/em>\u00a0do tema filho, o\u00a0<em>add_filter.<\/em><\/p>\n<pre class=\"lang:php decode:true\">function custom_filter_catalog($string){\r\n   return 'Veja mais';\r\n}\r\n\r\nadd_filter('the_link_catalog', 'custom_filter_catalog');<\/pre>\n<p>Criamos uma fun\u00e7\u00e3o onde retornamos o nome que desejamos que seja impresso\u00a0e depois no <em>add_filter<\/em>\u00a0informando em qual filtro queremos aplicar a fun\u00e7\u00e3o e o nome da fun\u00e7\u00e3o que ser\u00e1 chamada.<\/p>\n<p>Vamos agora pensar que ao inv\u00e9s de apenas dar op\u00e7\u00e3o do cliente mudar\u00a0o texto do link, mas tamb\u00e9m mudar o link inteiro. Mas pra isso precisamos passar mais informa\u00e7\u00f5es, como por exemplo saber o post que pertence aquele link.<\/p>\n<pre class=\"lang:php decode:true \">&lt;?php echo apply_filters('the_link_catalog', '&lt;a href=\"'.get_permalink().'&gt;Veja produto&lt;\/a&gt;', get_the_ID()); ?&gt;\r\n<\/pre>\n<p>Fizemos da mesma forma, s\u00f3 que agora o valor padr\u00e3o \u00e9 o pr\u00f3prio link e passamos o ID do post como op\u00e7\u00e3o, caso deseja saber de quem aquele link pertence.<\/p>\n<p>Agora, no tema filho, quero ao inv\u00e9s\u00a0de mostrar <em>&#8220;Veja Produto&#8221;<\/em>,\u00a0mostrar\u00a0o nome do produto e adicionar uma classe css pra identificar e criar uma personaliza\u00e7\u00e3o a mais desse tema filho.<\/p>\n<pre class=\"lang:php decode:true \">function custom_filter_catalog($html, $post_id){\r\n\treturn '&lt;a href=\"'.get_permalink($post_id).' class=\"btn-action btn-'.$post_id.'\"&gt;get_the_title($post_id)&lt;\/a&gt;';\r\n}\r\n\r\nadd_filter('the_link_catalog', 'custom_filter_catalog', 10, 2);<\/pre>\n<p>Criamos uma fun\u00e7\u00e3o e passamos dois par\u00e2metros: um que seria para o link e outro que seria pra o\u00a0id do post. \u00a0Dentro da fun\u00e7\u00e3o, como o id do post, refizemos o link passando para onde ser\u00e1 redirecionado e no nome do post adicionamos classes\u00a0como atributo para o link.<\/p>\n<p>Depois usamos o <em>add_filter<\/em>\u00a0passando o nome\u00a0do filtro que queremos usar e depois a fun\u00e7\u00e3o que tem modifica\u00e7\u00e3o.\u00a0Passamos ainda a ordem de prioridade que ser\u00e1 chamada a fun\u00e7\u00e3o e quantidade de par\u00e2metros que\u00a0ela tem.<\/p>\n<p>Dessa forma voc\u00ea consegue dar mais op\u00e7\u00f5es\u00a0para quem for utilizar seus temas e plugins.<\/p>\n<p>Espero que tenham gostado.<\/p>\n<p>Um abra\u00e7o e at\u00e9 a pr\u00f3xima.<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Um dos grandes atrativos em adotar o WordPress \u00e9 possibilidade de customizar\u00a0\u00a0informa\u00e7\u00f5es ou execu\u00e7\u00e3o de a\u00e7\u00f5es sem precisar mexer no\u00a0c\u00f3digo que voc\u00ea definiu, oferecendo\u00a0uma liberdade para quem for utiliz\u00e1-lo, implementando assim suas op\u00e7\u00f5es. Muitas vezes voc\u00ea precisa definir valores padr\u00f5es e que possam ser personalizados como valores de atributos e textos em partes do seu [&hellip;]<\/p>\n","protected":false},"author":67,"featured_media":3965,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[291],"tags":[],"class_list":["post-3741","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-wordpress"],"_links":{"self":[{"href":"https:\/\/www.mxcursos.com\/blog\/wp-json\/wp\/v2\/posts\/3741","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.mxcursos.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.mxcursos.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.mxcursos.com\/blog\/wp-json\/wp\/v2\/users\/67"}],"replies":[{"embeddable":true,"href":"https:\/\/www.mxcursos.com\/blog\/wp-json\/wp\/v2\/comments?post=3741"}],"version-history":[{"count":0,"href":"https:\/\/www.mxcursos.com\/blog\/wp-json\/wp\/v2\/posts\/3741\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.mxcursos.com\/blog\/wp-json\/wp\/v2\/media\/3965"}],"wp:attachment":[{"href":"https:\/\/www.mxcursos.com\/blog\/wp-json\/wp\/v2\/media?parent=3741"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.mxcursos.com\/blog\/wp-json\/wp\/v2\/categories?post=3741"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.mxcursos.com\/blog\/wp-json\/wp\/v2\/tags?post=3741"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}