Как выводить ссылку на удаление навсегда?

Я пытаюсь вывести ссылку «удалить комментарий» на front-end. Вот моя попытка:

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

Я добавил edit_comment в роль автора. Однако, когда я вхожу в систему как автор и нажимаю «Удалить комментарий», я получаю следующее сообщение на белом экране смерти:

Извините, вы не можете редактировать комментарии к этому сообщению.

Благодарим вас за создание в WordPress.

Версия 4.7.4

Как я могу выводить ссылку на удаление навсегда?

После короткого тестирования фрагмент кода из OP работает:

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

Но похоже, что мы должны удостовериться, что автор edit_others_posts только комментарии на свой пост , иначе он будет искать примитивные возможности edit_others_posts и edit_published_posts .

edit_comment не является примитивной возможностью, поэтому вместо этого мы должны посмотреть на map_meta_cap() чтобы увидеть, на каких примитивных возможностях она опирается. Там мы видим, что edit_comment – это мета- edit_comment которая использует:

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

для комментариев, не связанных с сиротой. Затем мы должны посмотреть на часть, где метаданные edit_post сопоставляются с другими примитивными возможностями. Существует несколько возможных сопоставлений, например, для edit_others_posts и edit_published_posts примитивных возможностей.

Жан Галеа написал замечательную статью о ролях и возможностях, где говорится:

  • Примитивные возможности назначаются ролям пользователей.
  • Возможности Meta никогда не должны быть назначены на роль.