在Wordpress上阻止输入框中的单词

k97glaaz  于 2023-01-20  发布在  WordPress
关注(0)|答案(1)|浏览(140)

我们可以阻止用户输入某些单词,但只有输入了被阻止的单词,它们才会被阻止。
例如,如果有人键入“word 1”,下面的过滤器将阻止,但不会阻止“word 11”。
如何调整下面的过滤器,以便只要word 1在任何字符中,它就被阻止,并且“word 11”或“word 11133”等被阻止,因为它包含被禁止的“word 1”?
试图找出一个简单的解决方案以上?
到目前为止,我们使用的代码是:

add_action( 'pre_get_posts', 'wpse338558_intercept_banned_keywords' );
function wpse338558_intercept_banned_keywords ($query) {
  $banned = array ('word1','word2','word3');
  if (in_array ($query->query_vars['s'], $banned)) $query->s = '';
  }

可以向$banned数组添加更多内容,但这需要考虑每一种可能的情况,这是不现实的。

iqih9akk

iqih9akk1#

你可以试试这个

add_action( 'pre_get_posts', 'wpse338558_intercept_banned_keywords' );
function wpse338558_intercept_banned_keywords ($query) {
  $banned = array ('word1','word2','word3');
  $search_string = $query->query_vars['s'];
  foreach($banned as $word){
    if (preg_match("/\b$word\b/i", $search_string)) {
      $query->s = '';
      break;
    }
  }
}

相关问题