我建议对弗兰克·P·瓦伦蒂诺维奇的答案进行补充。这样您就不需要不断编辑functions.php
当您要添加/删除到$stop_words
大堆
您可以通过利用内置Wordpress Comment Blacklist 特色
保存在wp黑名单中的所有内容都存储在数据库中的wp\\U选项表中blacklist_keys
. https://codex.wordpress.org/Option_Reference
在您的keywords_check
函数您可以获取这些键并将其存储在变量中:
$blacklisted = get_option(\'blacklist_keys\');
现在,将它们转换为适当的数组:
$stop_words = preg_split("/[\\s,]+/", $blacklisted);
所有停止词将从WP黑名单中删除。您可以按照Frank的回答中的详细说明继续函数的其余部分。即使是非开发人员也可以从Wordpress仪表板上帮助过滤垃圾邮件。
这里是全部:
function strpos_arr($haystack, $needle) {
if(!is_array($needle)) $needle = array($needle);
foreach($needle as $what) {
if(($pos = stripos($haystack, $what))!==false) return true;
}
return false;
}
add_action(\'gform_pre_submission_1\', \'keywords_check\');
function keywords_check( $result, $value, $form, $field ) {
$blacklisted = get_option(\'blacklist_keys\');
$stop_words = preg_split("/[\\s,]+/", $blacklisted);
if ( strpos_arr( $value, $stop_words ) ) {
$result[\'is_valid\'] = false;
$result[\'message\'] = \'Illegal words entered\';
}
return $result;
}
add_filter( \'gform_field_validation_2_4\', \'keywords_check\', 10, 4 );
如果您不需要像下面的答案详细信息那样测试特定的表单字段,我有一个解决方案,可以针对所有表单字段测试WP注释黑名单。
GitHub链接如下:https://github.com/adaprile/Gravity-Forms-WP-Comment-Blacklist
我希望这对某人有帮助!