php从内部函数退出


php exit from an inner function

我有一个创建post的函数。在保存新帖子之前,有一个钩子可以在保存之前操作数据:

function save(){
  $data = apply_filters('data_before_save',array(....));
  $post_id = wp_insert_post( $data );
  return $post_id;
}

现在我正在$data中添加内容:

add_filter('data_before_save','conditional_save',10,1 );
function conditional_save( $data ){
  //...some stuffs
  if( $data['x']== $blabla ){
     wp_safe_redirect( $link);
     exit();
  }else{
    $data['x'] = $x;
  }
  return $data;
}

function save会在线路save_post之前被function conditional_save退出吗?如果条件满足,我不想返回任何数据。我试了一下我的代码,它似乎有效——重定向了,没有创建新的帖子。但我想确保function save真的停止运行。

exit()将突然停止所有代码的执行。这通常不是个好主意。

请改用FLAGS

编辑:

FLAG不是保留关键字。只需在条件保存中将var设置为true/false,即可检查save()上的标志。根据var的结果,您可以限制做什么和不做什么。