Das Feld "Website" aus Kommentaren und Antworten entfernen?


8

Um Kommentar-Spam zu bekämpfen, möchte ich das Feld "Website " im Abschnitt "Hinterlasse eine Antwort" für Seiten- und Website-Kommentare ausblenden oder entfernen .

Ich habe keine Lust, das Ranking anderer Seiten zu erhöhen, indem sie ihre URLs in die Kommentare meiner Website einbetten. Dies scheint das zu sein, was 99% der Kommentare auf meiner Website tun möchten.

Ich verwende das Twenty Ten-Thema, wenn dies einen Unterschied in der Antwort macht.

Vielen Dank!


Warum nicht Akismet und / oder Captchas verwenden?
Raphael

Antworten:


13

Erstellen Sie eine Datei wp-content/plugins/mit diesem Code:

<?php
/*
Plugin Name: Get Rid of Comment Websites
*/
function my_custom_comment_fields( $fields ){
  if(isset($fields['url']))
    unset($fields['url']);
  return $fields;
}

add_filter( 'comment_form_default_fields', 'my_custom_comment_fields' );

Normalerweise würde ich sagen, dass Sie es in die Datei functions.php Ihres Themas einfügen, aber ich würde nicht empfehlen, dies für ein Thema zu tun, das wie Twenty Ten aktualisiert werden könnte. Auf diese Weise können Sie diese Funktionalität als Plugin hinzufügen, das deaktiviert werden kann.


Das hat den Trick gemacht - danke! Erstellt einen Ordner mit dem Namen "remove-url-field" und erstellt darin eine Datei mit dem Namen "remove-url-field.php". Anschließend wird das Plugin aktiviert, das in der Plugins-Oberfläche angezeigt wird. Schnell und einfach!
Cpuguru

2
Für einfache Plugins wie die oben genannten ist es nicht erforderlich, einen Ordner zu erstellen. Eine eigenständige Datei funktioniert einwandfrei. (Letztendlich haben Sie natürlich die Wahl, nur darauf hinzuweisen, dass Plugins nicht erforderlich sind.)
t31os

Ist das wirklich der einfachste Weg? Es scheint seltsam, dass es im Administrator Optionen für "Kommentarautor muss Name und E-Mail ausfüllen" gibt, aber das Feld "Website" nicht ausblenden.
DisgruntledGoat

Was ist daran kompliziert? Wenn Sie sich nicht mit FTP befassen möchten, finden Sie im Plugin-Repo sicher etwas, das dies tun würde.
John P Bloch

1
@ MD004 Das Schließen des PHP-Tags am Ende einer Datei ist nicht erforderlich. In einigen Fällen kann sich dies sogar als nachteilig erweisen, da einige Editoren stillschweigend eine neue Zeile am Ende der Datei anhängen, die die neue Zeile als ersten Teil des Antworttextes an den Browser sendet. Dies ist sehr schlimm, wenn Sie benutzerdefinierte Header später als beim Laden der Plugins senden müssen oder wenn XML erwartet, dass der richtige Text der erste Text im Dokument und keine neue Zeile ist.
John P Bloch

0

Abgesehen von der guten Antwort von John verwende ich eine einfachere Lösung, die mir mehr Kontrolle über das Kommentarformular und seine Felder ermöglicht.

Standardmäßig hat Ihr Thema comments.php( z. B. Twenty Eleven ) möglicherweise Folgendes:<?php comment_form(); ?>

Jetzt <?php comment_form(); ?>ist die Verwendung dieselbe wie:

<?php
    $args = array(
        'fields' => array(
                        'author' => '<p class="comment-form-author">' . '<label for="author">' . __( 'Name' ) . '</label> ' . ( $req ? '<span class="required">*</span>' : '' ) .
                                        '<input id="author" name="author" type="text" value="' . esc_attr( $commenter['comment_author'] ) . '" size="30"' . $aria_req . ' /></p>',
                        'email'  => '<p class="comment-form-email"><label for="email">' . __( 'Email' ) . '</label> ' . ( $req ? '<span class="required">*</span>' : '' ) .
                                        '<input id="email" name="email" type="text" value="' . esc_attr(  $commenter['comment_author_email'] ) . '" size="30"' . $aria_req . ' /></p>',
                        'url'    => '<p class="comment-form-url"><label for="url">' . __( 'Website' ) . '</label>' .
                                        '<input id="url" name="url" type="text" value="' . esc_attr( $commenter['comment_author_url'] ) . '" size="30" /></p>',
        );
    );
    comment_form( $args );
?>

Der einzige Unterschied, AFAIK, ist, dass die längere Version Ihnen mehr Flexibilität bietet. Wie in Ihrem Fall möchten Sie das Website-Feld nicht anzeigen. Sie entfernen also einfach den urlParameter im fieldsArray und das Endergebnis lautet wie folgt:

<?php
    $args = array(
        'fields' => array(
                        'author' => '<p class="comment-form-author">' . '<label for="author">' . __( 'Name' ) . '</label> ' . ( $req ? '<span class="required">*</span>' : '' ) .
                                        '<input id="author" name="author" type="text" value="' . esc_attr( $commenter['comment_author'] ) . '" size="30"' . $aria_req . ' /></p>',
                        'email'  => '<p class="comment-form-email"><label for="email">' . __( 'Email' ) . '</label> ' . ( $req ? '<span class="required">*</span>' : '' ) .
                                        '<input id="email" name="email" type="text" value="' . esc_attr(  $commenter['comment_author_email'] ) . '" size="30"' . $aria_req . ' /></p>',
        );
    );
    comment_form( $args );
?>

... was du brauchst.

Empfohlene Lektüre: WordPress Codex Function Reference / comment_form

Quelldatei: (Trunk-Version - aktuellste)http://core.svn.wordpress.org/trunk/wp-includes/comment-template.php


0

Keine perfekte Lösung, die anderen Lösungen sind in Ordnung

Anstatt PHP zu ändern, Formular, Kommentar, wie es nur ein Eingabefeld ist, was ist da, wenn es geladen und versteckt ist, anstatt ifAnweisungen oder rewritedas Kommentarformular zu schreiben

Blenden Sie einfach das URL-Feld aus

.comment-form-url {
    display: none;
}

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.