web-dev-qa-db-ja.com

中国語/ロシア語の記号を含むコメントを自動的に削除する方法を教えてください。

たまに、私はこれらのようなコメントを得ます:

彩天有眼啊、私達が存在する年の間にこのように精彩の絶縁の印を見てください。

彼らは私には全く役に立たない。中国語/日本語/韓国語/かどうかもわかりません。

それらのメッセージを自動的に削除するようにWordPressに指示するにはどうすればよいですか。

2
Martin Thoma

ここで引用した文字は、 Unicode文字プロパティ\p{Han}と一致するため、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()は、中国語(漢字)、韓国語(ハングル語)、ロシア語(キリル語)のすべての文字を検索します。プラグインはそれらのコメントをゴミ箱に移動します。

誰かが単にそれらをスパムとしてマークしたい場合は、次のようにフィルタ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 );
2
David

あなたはダッシュボード>設定>ディスカッションhttp://www.example.com/wp-admin/options-discussion.phpに組み込まれたブラックリスト機能を使用することができます、そしてあなたが除外したいアルファベットから数文字を追加してください。邪魔しないでくれ……。

0
Nabil Kadimi