it-swarm.com.de

Wie entferne ich die Fähigkeit von Kommentatoren, Hyperlinks zu Kommentaren hinzuzufügen?

Ich möchte in der Lage sein, die Fähigkeit eines Kommentators herauszufiltern, Hyperlinks in seinen Kommentartext einzufügen.

Ich habe das Feld "Websites" aus dem Mix entfernt, um das Spam-Aufkommen bereits zu verringern (siehe: Entfernen des Felds "Website" aus Kommentaren und Antworten? ) was sehr geholfen hat.

Standardmäßig können sie das Tag '<a'> im Kommentartext verwenden, wodurch Spammer Hyperlinks zu ihren Websites einbetten können.

Gibt es eine Möglichkeit, diese Funktion im Wysiwyg-Editor für Kommentarfelder herauszufiltern?

3
cpuguru

WP führt so viele hübsche Filter für dieses Zeug aus, dass es leicht ist, sich zu verirren.

Hier ist, was ich am Ende hatte:

remove_filter('comment_text', 'make_clickable', 9);
add_filter('pre_comment_content', 'strip_comment_links');

function strip_comment_links($content) {

    global $allowedtags;

    $tags = $allowedtags;
    unset($tags['a']);
    $content = addslashes(wp_kses(stripslashes($content), $tags));

    return $content;
}

Dadurch werden klar definierte Verknüpfungen entfernt und Filter entfernt, mit denen Nur-Text-Verknüpfungen in ordnungsgemäß gekennzeichnete Verknüpfungen umgewandelt werden.

8
Rarst

Eine andere Lösung -

Die Funktion, die den gesamten <a>...</a> aus einem Text entfernt (wahrscheinlich ist es besser, hier strip_tags anstelle von regex zu verwenden):

     function strip_links($content){
       return preg_replace('/<a[^>]*>(.*)<\/a>/iU','', $content);
     }

Entfernen Sie Verknüpfungen aus allen neuen Kommentaren dauerhaft , bevor Sie in die Datenbank eingefügt werden:

     add_filter('preprocess_comment', 'new_comment_strip_links');
     function new_comment_strip_links($commentdata){
       $commentdata['comment_content'] = strip_links($commentdata['comment_content']);
       return $commentdata;
     }

Oder entfernen Sie Links, bevor wir sie auf dem Bildschirm ausgeben (Ihr Design sollte den Filter "comment_text" irgendwo in einer Vorlagendatei ausführen):

     add_filter('comment_text', 'display_comment_strip_links');
     function display_comment_strip_links($content){
       return strip_links($content);
     }
1
onetrickpony