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?
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_posts
primitive.
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_posts
primitive capacités.
Jean Galea a écrit un grand article sur les rôles et les capacités) dans lequel il est écrit: