如何输出永久删除的评论链接?

时间:2017-06-12 作者:henrywright

我试图在前端输出一个“删除评论”链接。以下是我迄今为止的尝试:

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 cap到作者角色。然而,当我以作者身份登录并单击“删除评论”时,我会在一个白色的死亡屏幕上看到以下消息:

抱歉,您不允许编辑此帖子的评论。

感谢您使用WordPress创建。

版本4.7.4

如何输出有效的永久删除注释链接?

1 个回复
最合适的回答,由SO网友:birgire 整理而成

经过短暂测试后,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\' )
);
但看起来我们必须确保作者deleting comments on hir own post, 否则它将查找edit_others_postsedit_published_posts 基本功能。

这个edit_comment 不是一种基本功能,因此我们必须查看map_meta_cap() 函数查看它所依赖的基本功能。我们可以看到edit_comment 是一种元功能,它使用:

$caps = map_meta_cap( \'edit_post\', $user_id, $post->ID );
对于非孤立注释。然后我们要看看edit_post 元功能映射到其他基本功能。那里几乎没有可能的映射,例如到edit_others_postsedit_published_posts 基本功能。

Jean Galea写了一本很棒的书article 关于角色和能力,其中指出:

基本功能分配给用户角色

结束

相关推荐

通过表单中的隐藏字段发送模板中的PHP变量的值

在页面模板中,我有一个变量,用于存储帖子ID的数组。我希望用户能够通过单击该模板前端页面上的按钮,在电子邮件中发送该数据。电子邮件应该包括数组中每个帖子的post\\u标题和永久链接,最好还包括其他元数据。我还需要包括有关当前登录用户的信息-display\\u name和user\\u email。我认为使用查询变量不是一个可行的选择,因为数组中最多可以有数百个ID。我找到的最接近的向导是here, 但这是为了将当前的post数据传递到表单。