Wp_trash_post挂钩-使用wp_die时的页面更新问题

时间:2017-05-29 作者:thairish

我正在构建一个插件,在某些情况下可以防止某些帖子被放入垃圾箱。为此,我使用“wp\\u trash\\u post”。在回调函数中,我执行逻辑来检查帖子是否可以放入垃圾箱。如果不能,则调用wp\\u die()。简化的代码如下所示:

add_action( \'wp_trash_post\', \'check_delete_posts\' );

function check_delete_posts( $post_id ) {
    $check = false;
    //Custom logic would go here to check if the post can\'t be put in the bin, setting $check to true    

    if( $check === true ) {
        wp_die( "You can\'t delete this post." );
    }

}
现在有一个案子我遇到了麻烦。我添加的逻辑似乎工作得很好,bin posts应该是这样的,wp\\u die消息会显示何时无法Bind post。

问题是管理员检查多篇帖子(在edit.php?post\\u type=my\\u custom\\u post\\u type屏幕上),然后选择“移动到Bin”。比方说,管理员检查两个帖子,一个会通过自定义逻辑,另一个不会,调用wp_die(). wp_die() 将正确调用,但是,当用户单击浏览器上的后退时,编辑屏幕将与以前完全相同(即使现在已将一篇帖子添加到bin)。用户必须再次刷新页面,直到页面显示正确的屏幕,并在垃圾箱中显示一篇文章。

wp_die() 函数我尝试将第三个参数设置为“true”以显示反向链接,但效果相同。

有什么方法可以从wp_die() 它在哪里刷新编辑屏幕?

提前谢谢。

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

你基本上不应该die在一个动作上。这可能会使系统处于不稳定状态。

解决问题的正确方法是使用user_has_cap 允许您覆盖用户的默认权限的筛选器。增加的价值是,用户将(不应该)首先获得删除帖子的选项,和/或在开始之前检查权限并拒绝操作。

结束

相关推荐

Single必须使用Plugins目录进行本地开发

我有多个本地安装的WordPress,并希望有一个单一的必须使用插件目录为我的所有本地网站。有什么我可以添加到wp配置,例如,让我有一个文件夹,可以用于我的所有网站?或者另一种方法?例如:/根/站点/站点1//根/站点/站点2//根/站点/站点3/。。。所有用途:/根/mu插件/谢谢