web-dev-qa-db-fra.com

Ajouter supprimer, approuver, spam Liens vers les commentaires

Quelqu'un sait-il comment ajouter des liens de modération de commentaires rapides pour les utilisateurs autorisés à ajouter/modifier des messages et des commentaires? (Upprove/Unappove/Edit/Spam/Trash). Remarque: dans mon comments.php, j'appelle la boucle avec <?php wp_list_comments(); ?>

2
Arg Geo

Par défaut, wp_list_comments() appelle la classe Walker_Comment. Sa méthode start_el() appelle edit_comment_link() et nous trouvons ici un filtre pour votre question: Elle s'appelle 'edit_comment_link' et transmet deux variables, le texte du lien et l'ID de commentaire, que nous pouvons utiliser.

Les URL permettant de marquer un commentaire en tant que spam ou de le supprimer sont les suivantes:

  • wp-admin/comment.php?c=1&action=cdc&dt=spam pour spam, et
  • wp-admin/comment.php?c=1&action=cdc pour la suppression.

Nous pouvons ajouter un paramètre redirect_to= pour nous renvoyer à l'article une fois le commentaire supprimé.

Voici un exemple de plug-in que je viens de pirater ensemble ( adresse GitHub ):

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

Capture d'écran avec TwentyEleven (ordre inversé par la feuille de style):

enter image description here

7
fuxia

C’est ce que j’utilise (ajouté comme référence - la réponse de toscho IS MEILLEUR pour de nombreuses raisons):

<?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>';
} ?>

La plupart des thèmes sont déjà accompagnés d'un lien "Modifier", je ne l'incluais donc pas.

Exemple de prévisualisation:

Delete Spam

1
its_me