web-dev-qa-db-de.com

Wie kann ich Kommentare mit chinesischen/russischen Zeichen automatisch löschen?

Hin und wieder bekomme ich Kommentare wie diese:

苍天 苍天 有 眼, 让 让 在 有生之年 得以 观 得 如此 的 的

Sie sind absolut nutzlos für mich. Ich weiß nicht mal, ob es chinesisch/japanisch/koreanisch ist ...

Wie kann ich WordPress anweisen, diese Nachrichten automatisch zu löschen (nicht nur Spam)?

2
Martin Thoma

Diese Zeichen, die Sie hier zitiert haben, sind Han (von der chinesischen Sprache verwendet), da sie mit der Unicode-Zeicheneigenschaft\p{Han} übereinstimmen.

Sie können eine Suche nach regulären Ausdrücken in einem Plugin wie folgt durchführen:

<?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 );

Die Kontrollfunktion wpse_116973_has_unallowed_char() sucht nach allen Zeichen der chinesischen (Han), koreanischen (Hangul) und russischen (chyrillischen) Sprache. Das Plugin verschiebt diese Kommentare in den Papierkorb.

Wenn Sie nur als Spam markiert werden sollen, verwenden Sie den Filter pre_comment_approved wie folgt:

/**
 * @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

Sie können die integrierte Blacklist-Funktion in Dashboard> Einstellungen> Diskussion http://www.example.com/wp-admin/options-discussion.php verwenden und einige Zeichen aus dem Alphabet hinzufügen, das Sie ausschließen möchten. ' Ich störe dich wieder ... Ich denke.

0
Nabil Kadimi