plugins excelentes n\u00e3o s\u00f3 preveem como tamb\u00e9m fornecem documenta\u00e7\u00e3o<\/strong>.<\/p>\n\n\n\nFiltros (filters)<\/h3>\n\n\n\n
Filtros s\u00e3o normalmente usados quando h\u00e1 a previs\u00e3o para a altera\u00e7\u00e3o de uma vari\u00e1vel<\/strong> e, por isso, normalmente espera-se um retorno de uma fun\u00e7\u00e3o adicionada com o add_filter()<\/code>. Observe a fun\u00e7\u00e3o nativa the_content()<\/code>, por exemplo, que imprime o conte\u00fado de um post:<\/p>\n\n\n\nfunction the_content( $more_link_text = null, $strip_teaser = false) {\n $content = get_the_content( $more_link_text, $strip_teaser );\n\n \/**\n * Filter the post content.\n *\n * @since 0.71\n *\n * @param string $content Content of the current post.\n *\/\n $content = apply_filters( 'the_content', $content );\n $content = str_replace( ']]>', ']]>', $content );\n echo $content;\n}<\/code><\/pre>\n\n\n\nSimplificando, ela pega o conte\u00fado, aplica os filtros e imprime o resultado. No arquivo wp-includes\/default-filters.php temos:<\/p>\n\n\n\n
add_filter( 'the_content', 'wptexturize' );\nadd_filter( 'the_content', 'convert_smilies' );\nadd_filter( 'the_content', 'convert_chars' );\nadd_filter( 'the_content', 'wpautop' );\nadd_filter( 'the_content', 'shortcode_unautop' );\nadd_filter( 'the_content', 'prepend_attachment' );<\/code><\/pre>\n\n\n\nOu seja, o pr\u00f3prio WordPress pendura alguns filtros no the_content<\/strong>.<\/p>\n\n\n\nPendurar e despendurar: add_filter e remove_filter<\/h2>\n\n\n\n
T\u00e3o importante quanto poder incluir fun\u00e7\u00f5es nos hooks \u00e9 a possibilidade de retir\u00e1-los conforme a nossa necessidade<\/strong>. Vamos supor, por exemplo, que n\u00e3o queiramos que o WordPress insira automaticamente par\u00e1grafos no nosso conte\u00fado. Basta que no nosso tema ou plugin escrevamos:<\/p>\n\n\n\nremove_filter('the_content', 'wpautop');<\/code><\/pre>\n\n\n\nAlgumas vezes n\u00e3o podemos retirar o filtro para todas as ocasi\u00f5es, ent\u00e3o podemos retir\u00e1-lo, usar a fun\u00e7\u00e3o com o apply_filters e inclu\u00ed-lo novamente<\/strong>:<\/p>\n\n\n\nremove_filter('the_content', 'wpautop');\nthe_content();\nadd_filter('the_content', 'wpautop');<\/code><\/pre>\n\n\n\nA ordem \u00e9 importante<\/h2>\n\n\n\n
Como voc\u00ea j\u00e1 deve ter imaginado, a ordem em que as fun\u00e7\u00f5es s\u00e3o executadas pode ser importante<\/strong>. Por exemplo: se voc\u00ea precisa criar um c\u00f3digo para cada novo post e precisa que este c\u00f3digo seja enviado por e-mail, a fun\u00e7\u00e3o que cria o c\u00f3digo deve ser necessariamente chamada antes do envio. Para isso existe o par\u00e2metro (opcional) de prioridades<\/strong> tanto nas actions quanto nos filters. Com valor padr\u00e3o 10, as fun\u00e7\u00f5es s\u00e3o executadas da menor prioridade para a maior, ou seja, fun\u00e7\u00f5es adicionadas com prioridade 1 s\u00e3o executadas antes das adicionadas com prioridade 2. Este par\u00e2metro tamb\u00e9m pode ser necess\u00e1rio para retirar fun\u00e7\u00f5es dos hooks.<\/p>\n\n\n\nNecess\u00e1rio pensar tamb\u00e9m que os cen\u00e1rios de uso s\u00e3o extremamente variados e, por isso, o n\u00famero de par\u00e2metros esperados pelas fun\u00e7\u00f5es tamb\u00e9m varia. Para isso tamb\u00e9m existe um par\u00e2metro opcional.<\/p>\n\n\n\n
Resumindo<\/h2>\n\n\n\n
O diagrama que eu criei no post sobre como remover \u201cProtegido\u201d e \u201cPrivado\u201d dos t\u00edtulos no WordPress<\/a> pode ajudar a entender de uma forma mais gr\u00e1fica como um filtro \u00e9 usado.<\/p>\n\n\n\n