Adicionar excluir, aprovar, spam Links para Comentários

2

Alguém sabe como adicionar links de moderação de comentários rápidos para usuários que têm permissão para adicionar / editar postagens e comentários? (Upprove / Unappove / Editar / Spam / Lixeira). Nota: no meu comments.php eu chamo o loop com <?php wp_list_comments(); ?>

    
por Arg Geo 04.06.2012 / 02:05

2 respostas

7

Por padrão, wp_list_comments() chama a classe Walker_Comment . Seu método start_el() chama edit_comment_link() e aqui encontramos um filtro para sua pergunta: Ele é chamado 'edit_comment_link' e passa duas variáveis, o texto do link e o ID do comentário, que podemos usar.

Os URLs para marcar um comentário como spam ou para excluí-lo são:

  • wp-admin/comment.php?c=1&action=cdc&dt=spam para spam e
  • wp-admin/comment.php?c=1&action=cdc para exclusão.

Podemos adicionar um parâmetro redirect_to= para nos enviar de volta à postagem depois que o comentário foi enviado para a lixeira.

Aqui está um exemplo de plug-in que acabei de hackear ( endereço do GitHub ):

<?php # -*- coding: utf-8 -*-
/**
 * Plugin Name: T5 Comment moderation links
 * Version:     2012.06.04
 * Author:      Thomas Scholz <info@toscho.de>
 * 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 com TwentyEleven (ordem invertida pela folha de estilo):

    
por fuxia 04.06.2012 / 05:17
1

Isto é o que eu uso (adicionado como uma referência - a resposta de toscho É MELHOR por muitas razões):

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

A maioria dos temas já vem com um link "Editar", então não incluí isso.

Exemplo de pré-visualização:

    
por its_me 04.06.2012 / 18:31