¿Cómo generar un enlace para eliminar un comentario de forma permanente?

4

Estoy intentando generar un enlace "eliminar comentario" en el front-end. Aquí está mi intento hasta ahora:

printf(
    '<a href="%s">%s</a>',
    wp_nonce_url(
        admin_url( "comment.php?c=$comment_id&action=deletecomment" ),
        'delete-comment_' . $comment_id
    ),
    __( 'Delete comment', 'text-domain' )
);

He agregado edit_comment cap al rol de autor. Sin embargo, cuando inicio sesión como autor y hago clic en Eliminar comentario, aparece el siguiente mensaje en una pantalla blanca de la muerte:

  

Lo sentimos, no tienes permiso para editar comentarios en esta publicación.

     

Gracias por crear con WordPress.

     

Versión 4.7.4

¿Cómo puedo generar un enlace para eliminar comentarios de forma permanente que funcione?

    
pregunta henrywright 12.06.2017 - 21:37

1 respuesta

3

Después de probar brevemente, el fragmento de código de OP parece funcionar:

printf(
    '<a href="%s">%s</a>',
    wp_nonce_url(
        admin_url( "comment.php?c=$comment_id&action=deletecomment" ),
        'delete-comment_' . $comment_id
    ),
    esc_html__( 'Delete comment', 'text-domain' )
);

Pero parece que tenemos que asegurarnos de que el autor solo esté eliminando comentarios en su propia publicación , de lo contrario, buscará edit_others_posts y% co_de Capacidades% primitivas .

El edit_published_posts no es una capacidad de primitivo , por lo tanto, tenemos que ver el edit_comment para ver en qué capacidades primitiva se basa. Allí podemos ver que map_meta_cap() es una capacidad de meta que utiliza:

$caps = map_meta_cap( 'edit_post', $user_id, $post->ID );

para comentarios no huérfanos. Luego tenemos que ver la parte donde la capacidad edit_comment meta se asigna a otras capacidades primitivas . Hay pocas asignaciones posibles allí, por ejemplo. a las capacidades de edit_post y edit_others_posts primitive .

Jean Galea ha escrito un gran artículo sobre roles y capacidades, donde dice:

  • Las capacidades primitivas se asignan a roles de usuario.
  • Las capacidades meta nunca deben asignarse a un rol.
respondido por el birgire 12.06.2017 - 22:52

Lea otras preguntas en las etiquetas