如何自动删除包含中文/俄文符号的评论?

时间:2013-10-07 作者:Martin Thoma

我偶尔会收到这样的评论:

苍天有眼啊,让我在有生之年得以观得如此精彩绝伦的帖子。

它们对我毫无用处。我甚至不知道是不是中文/日文/韩文/。。。

如何让WordPress自动删除(而不仅仅是垃圾邮件)这些邮件?

2 个回复
SO网友:David

您在此处引用的字符是汉(中文使用),因为它们与unicode character property \\p{Han}.

您可以在如下插件中执行正则表达式搜索:

<?php

/**
 * Plugin Name: Drop comments by chars
 * Description: Delete comments which includes unicode characters of Han, Hangul and Cyrillic.
 * Version:     2014.02.18
 * Author:      David Naber
 * Licence:     MIT
 * Licence URI: http://opensource.org/licenses/mit-license.php
 * Copyright:   (c) 2014 David Naber
 * @see         http://wordpress.stackexchange.com/q/116973/31323
 */

/**
 * check for the occurence of Han, Hangul and Cyrillic characters
 *
 * @param string $content
 * @return bool
 */
function wpse_116973_has_unallowed_char( $content ) {

    return (bool) preg_match( \'~\\p{Hangul}|\\p{Han}|\\p{Cyrillic}~u\', $content );
}

/**
 * @wp-hook comment_post
 * @param int $comment_ID
 * @param array $approved
 * @return void
 */
function wpse_116973_trash_unallowed_comments( $comment_ID, $approved ) {

    $comment = get_comment( $comment_ID );
    if ( ! wpse_116973_has_unallowed_char( $comment->comment_content ) )
        return;

    wp_trash_comment( $comment_ID );
}
add_action( \'comment_post\', \'wpse_116973_trash_unallowed_comments\', 10, 2 );
控制功能wpse_116973_has_unallowed_char() 搜索汉语(Han)、韩语(Hangul)和俄语(Chyrillic)语言的所有字符。插件将这些注释移动到垃圾箱。

如果有人只想将其标记为垃圾邮件,请使用过滤器pre_comment_approved 像这样:

/**
 * @wp-hook pre_comment_approved
 * @param bool $approved
 * @param array $commentdata
 * @return bool|string Returns FALSE, TRUE, or \'spam\'
 */
function wpse_116973_allow_comment( $approved, $commentdata ) {

    if ( wpse_116973_has_unallowed_char( $commentdata[ \'comment_content\' ] ) )
        return \'spam\';

    return $approved;
}
add_filter( \'pre_comment_approved\', \'wpse_116973_allow_comment\', 10, 2 );

SO网友:Nabil Kadimi

您可以在中使用内置的黑名单功能Dashboard > Settings > Discussion http://www.example.com/wp-admin/options-discussion.php, 从要排除的字母表中添加几个字符,这样就不会再困扰您了。。。我想是吧。

结束