{"id":36769,"date":"2020-07-18T04:59:00","date_gmt":"2020-07-18T04:59:00","guid":{"rendered":"https:\/\/contactform7.com\/?p=36769"},"modified":"2020-07-29T22:11:06","modified_gmt":"2020-07-29T22:11:06","slug":"custom-spam-filtering","status":"publish","type":"post","link":"https:\/\/contactform7.com\/es\/2020\/07\/18\/custom-spam-filtering\/","title":{"rendered":"Filtrado personalizado de mensajes no deseados"},"content":{"rendered":"\n<p>La protecci\u00f3n contra mensajes no deseados es una misi\u00f3n cr\u00edtica para los formularios web. El plugin Contact Form 7 proporciona varios tipos de m\u00f3dulos de protecci\u00f3n contra mensajes no deseados (spam) para bloquear de manera efectiva el env\u00edo por parte de <em>spammers<\/em>.<\/p>\n\n\n\n<p>Al igual que otras partes de Contact Form 7, su funci\u00f3n de filtrado de mensajes no deseados est\u00e1 dise\u00f1ada para ser altamente personalizable. En este fragmento de c\u00f3digo, te mostrar\u00e9 c\u00f3mo implementar un filtro personalizado de mensajes no deseados con ejemplos simples de c\u00f3digo.<\/p>\n\n\n\n\n\n\n<!--more-->\n\n\n\n<h4 class=\"wp-block-heading\">El gancho de filtro wpcf7_spam<\/h4>\n\n\n\n<p>El filtro de mensajes no deseados de Contact Form 7 se implementa como una funci\u00f3n PHP que est\u00e1 conectada al gancho de filtro <code>wpcf7_spam<\/code>. Si una funci\u00f3n de filtro determina que el env\u00edo en curso un mensaje no deseado, la funci\u00f3n devuelve <em>true<\/em> (verdadero).<\/p>\n\n\n\n<p>El siguiente c\u00f3digo PHP es un ejemplo simple de un filtro de mensaje no deseado. Esta funci\u00f3n de filtro determina que el env\u00edo es un mensaje no deseado si la entrada del usuario incluye la mundialmente famosa palabra de spam: <em>Viagra<\/em>.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: php; title: ; notranslate\" title=\"\">\nadd_filter( &#039;wpcf7_spam&#039;, function( $spam ) {\n  if ( $spam ) {\n    return $spam;\n  }\n\n  if ( false !== stripos( $_POST&#x5B;&#039;your-message&#039;], &#039;viagra&#039; ) ) {\n    $spam = true;\n  }\n\n  return $spam;\n}, 10, 1 );\n<\/pre><\/div>\n\n\n<p>Observa que la funci\u00f3n de filtro primero verifica la variable <code>$spam<\/code>, y si es <em>true<\/em>, devuelve la variable sin buscar \u00abviagra\u00bb en la entrada del usuario.<\/p>\n\n\n\n<p>\u00bfPor qu\u00e9? El valor inicial establecido en la variable <code>$spam<\/code> es <em>false<\/em> (falso). Si ves que <code>$spam<\/code> es <em>true<\/em> al comienzo de tu funci\u00f3n de filtro, es porque hay otra funci\u00f3n de filtro conectada al mismo gancho de filtro <code>wpcf7_spam<\/code> (que tiene mayor prioridad que la tuya), y ha devuelto <em>true<\/em>.<\/p>\n\n\n\n<p>Esto significa que otro filtro de mensaje no deseado ya ha determinado que el env\u00edo es un mensaje no deseado y, por lo tanto, no necesita hacer un filtrado adicional.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"logging-spam-submission\">Registro de env\u00edos de mensajes no deseados<\/h4>\n\n\n\n<p>Dado que existen varios tipos de filtros de mensajes no deseados funcionando, ser\u00eda \u00fatil si dejaras un registro que explique qu\u00e9 filtro marc\u00f3 el env\u00edo como mensaje no deseado y por qu\u00e9.<\/p>\n\n\n\n<p>Para dejar un registro de mensajes no deseados, llama al m\u00e9todo de instancia <code>add_spam_log()<\/code> de la clase <code>WPCF7_Submission<\/code>. <code>add_spam_log()<\/code> toma una matriz asociativa como \u00fanico argumento y esa matriz debe incluir las siguientes variables:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><code>agent<\/code>: Una palabra clave o nombre \u00fanico que identifique a tu filtro personalizado.<\/li><li><code>reason<\/code>: Un texto breve que describa la raz\u00f3n por la cual el filtro ha determinado que el env\u00edo es un mensaje no deseado.<\/li><\/ul>\n\n\n\n<p>El siguiente ejemplo muestra el uso de <code>add_spam_log()<\/code> dentro del filtro anterior que detecta la palabra <em>Viagra<\/em>:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: php; highlight: [9,10,11,12,13,14,15]; title: ; notranslate\" title=\"\">\nadd_filter( &#039;wpcf7_spam&#039;, function( $spam ) {\n  if ( $spam ) {\n    return $spam;\n  }\n\n  if ( false !== stripos( $_POST&#x5B;&#039;your-message&#039;], &#039;viagra&#039; ) ) {\n    $spam = true;\n\n    \/\/ Dejando un registro del mensaje no deseado.\n    $submission = WPCF7_Submission::get_instance();\n\n    $submission-&gt;add_spam_log( array(\n      &#039;agent&#039; =&gt; &#039;detector_de_viagra&#039;,\n      &#039;reason&#039; =&gt; &quot;El plugin detect\u00f3 la palabra Viagra.&quot;,\n    ) );\n  }\n\n  return $spam;\n}, 10, 1 );\n<\/pre><\/div>\n\n\n<p>Puedes ver los registros de mensajes no deseados con un plugin de almacenamiento de mensajes que sea compatible con el registro de mensajes no deseados. <a href=\"https:\/\/contactform7.com\/es\/save-submitted-messages-with-flamingo\/\">Flamingo<\/a> es uno de esos plugins, y <a href=\"https:\/\/contactform7.com\/es\/2019\/05\/31\/why-is-this-message-marked-spam\/\">lo recomendamos a los usuarios de Contact Form 7<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>La protecci\u00f3n contra mensajes no deseados es una misi\u00f3n cr\u00edtica para los formularios web. El plugin Contact Form 7 proporciona varios tipos de m\u00f3dulos de protecci\u00f3n contra mensajes no deseados (spam) para bloquear de manera efectiva el env\u00edo por parte de spammers. Al igual que otras partes de Contact Form 7, su funci\u00f3n de filtrado &hellip; <a href=\"https:\/\/contactform7.com\/es\/2020\/07\/18\/custom-spam-filtering\/\" class=\"more-link\">Seguir leyendo <span class=\"screen-reader-text\">Filtrado personalizado de mensajes no deseados<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_locale":"es_ES","_original_post":"https:\/\/contactform7.com\/?p=36765","footnotes":"","jetpack_post_was_ever_published":false},"categories":[19],"tags":[],"class_list":["post-36769","post","type-post","status-publish","format-standard","hentry","category-cookbook","es-ES"],"jetpack_featured_media_url":"","jetpack_likes_enabled":true,"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/contactform7.com\/wp-json\/wp\/v2\/posts\/36769","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/contactform7.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/contactform7.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/contactform7.com\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/contactform7.com\/wp-json\/wp\/v2\/comments?post=36769"}],"version-history":[{"count":0,"href":"https:\/\/contactform7.com\/wp-json\/wp\/v2\/posts\/36769\/revisions"}],"wp:attachment":[{"href":"https:\/\/contactform7.com\/wp-json\/wp\/v2\/media?parent=36769"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/contactform7.com\/wp-json\/wp\/v2\/categories?post=36769"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/contactform7.com\/wp-json\/wp\/v2\/tags?post=36769"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}