如果满足元数据的特定条件,是否可以中止POST更新?

时间:2020-01-24 作者:Jazzpaths

我有一个自定义的帖子类型,其中有一些元数据要检查,以便保存或更新。现在我想知道,如果元数据检查失败,是否可以中止后期创建或更新。

为了给出一个简单的上下文并解决这个问题,假设我的自定义帖子有一个包含两个日期输入的元框,我们将它们称为date\\u start和date\\u end。当用户尝试在后端发布或更新帖子时,我希望检查这些元数据,如果date\\u start>=date\\u end,则进程将中止,而不实际更新帖子或将帖子插入数据库。我试图实现的逻辑如下:

add_action( \'before_updating_post\', check_metadata );

function check_metadata() {
  if ( condition ) {
    continue post save/update
  } else {
    abort post save/update // The post will not be saved/updated
  }
}
其中,“before\\u updated\\u post”是一个挂钩的幻想名称,它允许我中止更新帖子的过程。

我已经研究了一些与更新后挂钩相关的问题,但找不到一些允许中止进程的问题,因为大多数问题都与保存前的数据操作有关。

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

有一个动作钩,pre_post_update 得到执行just before 更新帖子。

add_action(\'pre_post_update\', function($post_id, $data)){
  if(!isset($_POST[\'date_start\']){
    wp_safe_redirect("post.php?post={$post_id}");
    die();
  }
}
我没有找到任何在创建post之前执行的操作,但是,我确实找到了一个过滤器,可以并且将可以使用重定向验证数据/中止,就像上面的函数一样。

* @param array $data    An array of slashed post data.
* @param array $postarr An array of sanitized, but otherwise unmodified post data.

add_filter(\'wp_insert_post_data\', $data, $postarr, function(){})

相关推荐