我正在编写一个插件,该插件将调节所有帖子,无论用户发布的帖子级别如何。它将对照单词列表检查帖子内容和标题,如果帖子中有任何单词,我想将帖子放在审核队列中,就像它是由贡献者发布的一样。这部分很好用,但我也希望它能自动删除带有非常糟糕的单词的帖子。这就是我目前拥有它的方式:
function filter_handler( $data , $postarr ) {
// Get vars from data
$content = $data[\'post_content\'];
$title = $data[\'post_title\'];
// Array of words that will hold a post for aproval
$badWords = array(
"link=", "content-type", "bcc:", "cc:", "document.cookie",
"onclick", "onload", "javascript"
);
$reallyBadWords = array(
"query", "pluginTesting"
);
// If bad words exist in post, set post_status to pending
foreach ( $badWords as $word ) {
if (
strpos( strtolower( $content ), strtolower( $word ) ) ||
strpos( strtolower( $title ), strtolower( $word ) )
) {
$data[\'post_status\'] = "pending";
}
}
// If really bad words exist, delete post
foreach ( $reallyBadWords as $word ) {
if (
strpos( strtolower( $content ), strtolower( $word ) ) ||
strpos( strtolower( $title ), strtolower( $word ) )
) {
$data[\'post_status\'] = \'trash\';
}
}
return $data;
}
add_filter( \'wp_insert_post_data\', \'filter_handler\', \'99\', 2 );
这适用于常规单词,但需要两个非常糟糕的单词才能将帖子设置为垃圾。同样使用这种方法,当用户发布一篇包含非常糟糕的文字的帖子时,他们会被引导到一个错误页面,告诉他们不允许在垃圾箱中编辑帖子。有什么好的方法可以修复此问题,以便将用户发送回帖子页面并显示错误消息,通知他们他们的帖子已被删除?
还有,我怎样才能纠正在删除之前需要两个非常糟糕的词这一事实?