Como enviar um link de comentário permanentemente deletado?

4

Estou tentando exibir um link "excluir comentário" no front-end. Aqui está minha tentativa até agora:

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

Adicionei edit_comment cap à função de autor. No entanto, quando faço login como autor e clico em Excluir comentário, recebo a seguinte mensagem em uma tela branca da morte:

  

Desculpe, você não tem permissão para editar comentários nesta postagem.

     

Obrigado por criar com o WordPress.

     

Versão 4.7.4

Como posso produzir um link de comentário de exclusão permanente que funcione?

    
por henrywright 12.06.2017 / 21:37

1 resposta

3

Após um breve teste, o snippet de código do 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' )
);

Mas parece que temos que ter certeza de que o autor está apenas excluindo os comentários em sua própria postagem , caso contrário, ele procurará os edit_others_posts e% co_de Recursos em% primitivos .

O recurso edit_published_posts não é primitivo , então temos que olhar para o edit_comment função para ver quais recursos primitivos dependem. Lá, podemos ver que map_meta_cap() é um recurso meta que usa:

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

para comentários não órfãos. Então, temos que olhar para a parte em que a capacidade meta edit_comment mapeia para outros recursos primitivos . Existem poucos mapeamentos possíveis, por ex. para os recursos edit_post e edit_others_posts primitivos .

Jean Galea escreveu um ótimo artigo sobre funções e recursos, onde diz:

  • Capacidades primitivas são atribuídas a funções de usuário.
  • Meta capacidades nunca devem ser atribuídas a uma função.
por birgire 12.06.2017 / 22:52

Tags