web-dev-qa-db-fra.com

Comment sortir un lien de commentaire supprimer définitivement?

J'essaie de générer un lien "supprimer un commentaire" sur le serveur frontal. Voici ma tentative jusqu'à présent:

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' )
);

J'ai ajouté edit_comment cap au rôle d'auteur. Cependant, lorsque je me connecte en tant qu'auteur et que je clique sur Supprimer le commentaire, le message suivant s'affiche sur un écran blanc de la mort:

Désolé, vous n'êtes pas autorisé à modifier les commentaires sur ce post.

Merci d'avoir créé avec WordPress.

Version 4.7.4

Comment puis-je générer un lien de commentaire de suppression permanente qui fonctionne?

4
henrywright

Après avoir brièvement testé, l'extrait de code de OP semble fonctionner:

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' )
);

Mais il semble que nous devons nous assurer que le auteur ne fait que supprimer les commentaires de son propre message , sinon il recherchera les capacités edit_others_posts et edit_published_postsprimitive.

Le edit_comment n’est pas une capacité primitive, nous devons donc examiner la fonction map_meta_cap() / pour voir quelles sont les capacités primitive. Elle nous permet de constater que edit_comment une capacité meta qui utilise:

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

pour les commentaires non orphelins. Ensuite, nous devons examiner la partie où la méta-capacité edit_post est mappée sur d'autres capacités primitives. Il existe peu de mappages possibles, par exemple à edit_others_posts et edit_published_postsprimitive capacités.

Jean Galea a écrit un grand article sur les rôles et les capacités) dans lequel il est écrit:

  • Les capacités primitives sont attribuées aux rôles d'utilisateur.
  • Les méta capacités ne devraient jamais être assignées à un rôle.
3
birgire