Agregar eliminar, aprobar, spam Enlaces a comentarios

2

¿Alguien sabe cómo agregar enlaces rápidos de moderación de comentarios para usuarios que tienen permiso para agregar / editar publicaciones y comentarios? (Aprobar / Desmarcar / Editar / Spam / Papelera). Nota: en mis comentarios.php Llamo al bucle con <?php wp_list_comments(); ?>

    
pregunta Arg Geo 04.06.2012 - 02:05

2 respuestas

7

Por defecto, wp_list_comments() llama a la clase Walker_Comment . Su método start_el() llama a edit_comment_link() y aquí encontramos un filtro para su pregunta: se llama 'edit_comment_link' y pasa dos variables, el texto del enlace y el ID del comentario, que podemos usar.

Las URL para marcar un comentario como spam o para eliminarlo son:

  • wp-admin/comment.php?c=1&action=cdc&dt=spam para spam, y
  • wp-admin/comment.php?c=1&action=cdc para su eliminación.

Podemos agregar un parámetro redirect_to= para enviarnos de nuevo a la publicación después de que se eliminó el comentario.

Aquí hay un complemento de ejemplo que acabo de piratear ( dirección de 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;
    }
}

Captura de pantalla con TwentyEleven (orden revertido por la hoja de estilo):

    
respondido por el fuxia 04.06.2012 - 05:17
1

Esto es lo que uso (agregado como referencia: la respuesta de Toscho ES MEJOR por muchas razones):

<?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 mayoría de los temas ya vienen con un enlace "Editar", así que no lo incluí.

Vista previa de ejemplo:

    
respondido por el its_me 04.06.2012 - 18:31

Lea otras preguntas en las etiquetas