it-swarm.com.de

Hinzufügen, Löschen, Genehmigen, Spam Links zu Kommentaren

Weiß jemand, wie man schnelle Links zur Kommentarmoderation für Benutzer hinzufügt, die über die Berechtigung zum Hinzufügen/Bearbeiten von Beiträgen und Kommentaren verfügen? (Upprove/Unappove/Edit/Spam/Trash). Anmerkung: in meiner comments.php rufe ich die Schleife mit <?php wp_list_comments(); ?> auf

2
Arg Geo

Standardmäßig ruft wp_list_comments() die Klasse Walker_Comment auf. Die Methode start_el() ruft edit_comment_link() auf und hier finden wir einen Filter für Ihre Frage: Sie heißt 'edit_comment_link' und übergibt zwei Variablen, den Linktext und die Kommentar-ID, die wir verwenden können.

Die URLs, um einen Kommentar als Spam zu markieren oder zu löschen, lauten:

  • wp-admin/comment.php?c=1&action=cdc&dt=spam für Spam und
  • wp-admin/comment.php?c=1&action=cdc zum Löschen.

Wir können einen Parameter redirect_to= hinzufügen, um uns zurück zu dem Beitrag zu schicken, nachdem der Kommentar gelöscht wurde.

Hier ist ein Beispiel-Plugin, das ich gerade zusammen gehackt habe ( GitHub-Adresse ):

<?php # -*- coding: utf-8 -*-
/**
 * Plugin Name: T5 Comment moderation links
 * Version:     2012.06.04
 * Author:      Thomas Scholz <[email protected]>
 * Author URI:  http://toscho.de
 * License:     MIT
 * License URI: http://www.opensource.org/licenses/mit-license.php
 */

if ( ! function_exists( 't5_comment_mod_links' ) )
{
    add_filter( 'edit_comment_link', 't5_comment_mod_links', 10, 2 );

    /**
     * Adds Spam and Delete links to the Sdit link.
     *
     * @wp-hook edit_comment_link
     * @param   string  $link Edit link markup
     * @param   int $id Comment ID
     * @return  string
     */
    function t5_comment_mod_links( $link, $id )
    {
        $template = ' <a class="comment-edit-link" href="%1$s%2$s">%3$s</a>';
        $admin_url = admin_url( "comment.php?c=$id&action=" );

        // Mark as Spam.
        $link .= sprintf( $template, $admin_url, 'cdc&dt=spam', __( 'Spam' ) );
        // Delete.
        $link .= sprintf( $template, $admin_url, 'cdc', __( 'Delete' ) );

        // Approve or unapprove.
        $comment = get_comment( $id );

        if ( '0' === $comment->comment_approved )
        {
            $link .= sprintf( $template, $admin_url, 'approvecomment', __( 'Approve' ) );
        }
        else
        {
            $link .= sprintf( $template, $admin_url, 'unapprovecomment', __( 'Unapprove' ) );
        }

        return $link;
    }
}

Screenshot mit TwentyEleven (Reihenfolge wird vom Stylesheet umgekehrt):

 enter image description here 

7
fuxia

Dies ist, was ich benutze (als Referenz hinzugefügt - toschos Antwort IS aus vielen Gründen BESSER):

<?php if (current_user_can('edit_post')) {
    $id = get_comment_ID();
    echo ' <a href="'.admin_url("comment.php?action=cdc&c=$id").'">[Delete]</a>';
    echo ' <a href="'.admin_url("comment.php?action=cdc&dt=spam&c=$id").'">[Spam]</a>';
} ?>

Die meisten Themen sind bereits mit einem "Bearbeiten" -Link versehen, daher habe ich diesen nicht hinzugefügt.

Beispiel Vorschau:

Delete Spam

1
its_me