toscho.design

WordPress: Moderationslinks für Kommentare

Trotz des Antispam-Plugins schlüpft auch hier manchmal ein Müllkommentar durch den Filter, oder ich vertippe mich … für diese Fälle bietet WordPress an, Kommentare zu bearbeiten, als Spam zu markieren oder ganz zu löschen. Im Backend.

Das ist mir ein wenig zu umständlich; deshalb habe ich in meiner Klasse ›XWP‹, die zusätzliche Templatetags erzeugt, folgenden kleinen Schnipsel eingebaut, den ich von Joost de Valk abgeguckt habe:

    /* Generates comment moderation links.
     *
     * @author Joost de Valk
     * @link   http://yoast.com/wordpress-functions-supercharge-theme/
     * @param  int $id Comment id - use get_comment_ID()
     * @return void
     */
    public static function delete_comment_link($id)
    {
        if ( ! current_user_can('moderate_comments') )
        {
            return;
        }
        global $post;
        $redirect = get_permalink( $post->ID );
        $links = array (
            'delete'  => 'cdc',
            'spam' => 'cdc&dt=spam',
            'edit' => 'editcomment'
        );
        $return = '<span class="comment_admin">';
        foreach ( $links as $name => $param )
        {
            $return .= "<a href='"
                    . admin_url("comment.php?c=$id&action=$param&redirect_to=$redirect")
                    . "'>$name</a>";
        }
        print $return . '</span>';
        return;
    }

In der comments.php rufe ich die Funktion innerhalb des Kommentarloops auf:

XWP::delete_comment_link( get_comment_ID() );

Das erzeugt etwa dieses Markup:

<span class="comment_admin">
  <a href='/wp-admin/comment.php?c=905&action=cdc&redirect_to=/2010/beispiel/'
     >delete</a>
  <a href='/wp-admin/comment.php?c=905&action=cdc&dt=spam&redirect_to=/2010/beispiel/'
     >spam</a>
  <a href='/wp-admin/comment.php?c=905&action=editcomment&redirect_to=/2010/beispiel/'
     >edit</a>
</span>

Mit ein wenig CSS aufgepeppt …

.comment_admin
    {
        float:              right;
        font:               .9em/1 Calibri;
        text-align:         center;
    }
.comment_admin a
    {
        color:              #444;
        background:         #f9f9f9;
        text-decoration:    none;
        border:             1px solid #bbb;
        border-radius:      4px;
        box-shadow:         0 2px 3px rgba(0,0,0,0.2);
        display:            inline-block;
        width:              3em;
        margin:             4px;
        padding:            4px 15px;
    }
#content .comment_admin a:hover
    {
        background:         #666;
        color:              #fff;
        border:             1px solid #222;
    }

… sieht das Ergebnis dann so aus:

Nach einem Klick landet man in der Bearbeitungsmaske im Backend, dann erst wird der Kommentar per Knopfdruck gelöscht oder als Spam markiert.

Mehr so’n Zeug:

8 Kommentare

  1. Patrick am 29.04.2010 · 23:57

    Hmm könnte man das auch so erweitern, dass Ajax Edit Comments für Kommentatoren überflüssig wird?

  2. Thomas Scholz am 30.04.2010 · 00:03

    @Patrick: Die beiden Aufgaben ›Moderation‹ und ›Bearbeiten eigener Beiträge durch Kommenatoren‹ würde ich eher auseinanderhalten wollen. Sicher ließe sich die Funktionalität der AJAX-Edits auch ins Theme integrieren. Aber wozu? Damit gewinnt man nichts.

  3. Patrick am 30.04.2010 · 00:06

    @Thomas Scholz: Damit könnte man sich das AJAX Edit Comments Plugin sparen, was meiner Meinung überladen und schwer anpassbar ist. Zumal nerven die dauernden Update-Hinweise, seitdem das Plugin nurnoch kostenpflichtig verfügbar ist (klar kann ich die ausschalten, aber andere User vllt. nicht).

  4. Mann-im-Mond am 09.06.2010 · 11:54

    Also den Sinn habe ich jetzt nicht ganz verstanden, wahrscheinlich fehlt mir da das technische Verständnis für. Aber wenn ich keine Kommentare bearbeite, dann landen gelöschte im Papierkorb und können wieder hergestellt werden. Das gleich gilt für Spam. Ist das nicht Sicherung genug?

  5. Thomas Scholz am 09.06.2010 · 12:11

    @Mann-im-Mond: Manchmal kann sich ein Spamkommentar am Spamfilter vorbeischmuggeln. Das ist unvermeidlich. Ich möchte die bequem sofort kennzeichnen.

    Aber wenn ich keine Kommentare bearbeite […]

    Hier geht es ja um den anderen Fall: Wenn du nämlich doch einen Kommentar bearbeiten willst. Wenn du das nie tun möchtest, dann brauchst du diese Funktion natürlich nicht.

  6. Andreas Hecht am 22.12.2011 · 21:48

    Toscho, diese Moderationslinks mögen sehr hilfreich sein, allerdings würde ich mir eher eine Bearbeitungsfunktion für bereits abgegebene Kommentare für die kommentierenden Nutzer einer Webseite wünschen - so wie Disqus es vorgemacht hat. Dann kann man auch mal eben einen Rechtschreibefehler korrigieren und versehentlich hinterlassenen, ähm - Müll - korrigieren.

  7. Thomas Scholz am 23.12.2011 · 10:07

    @Andreas Hecht: Steht auf meiner Todo-Liste. Nicht sehr weit oben allerdings; ich habe noch so viele andere Dinge zu erledigen …

  8. Rene am 29.12.2011 · 13:44

    Was mir aufgefallen ist, ist eher das gegenteil. Also das Antispam plugins wie askiment auch kommentare blocken die garkein spam sind.

    auf einen meiner webseiten habe ich eine dofollow blog liste und gerade da hab ich immer wieder ordentliche sachliche kommentare die nicht z.b. auf irgendwelche shops verlinken oder keyword namen haben oder so.