设置完所有元数据后,钩子将多次触发

时间:2019-08-16 作者:Morgan Tartreau

每次用户手动保存帖子时,我都需要触发一个函数(所以只有通过“更新按钮”)。

以下是我所拥有的:

add_action( \'save_post\', \'my_save_post_function\', 10, 3 );

function my_save_post_function($object_id, $post, $updated)  {

    $post = get_post($object_id);
    $post_ID = $object_id;

    if(!wp_doing_ajax() && count($_REQUEST) > 2){

        if($post->post_type == "incsub_event" && $_POST["action"] = "editpost")
  { /* do stuff*/ }
}
问题:这个函数被触发了两次(我可以看到,由于我在do stuff中的代码,一切都被复制了)。

似乎第一次是在用户单击链接时触发的,第二次(可能?)元数据更新后。

我怎么能只触发一次?

PS:尝试使用钩子“post\\u updated”(不更新我的元数据)和“update\\u post\\u metadata”(触发两次)

就我而言,我使用的是ACF。

ACF提供了一个钩子,它完全满足我的要求,但仅适用于ACF字段:

add_action( \'acf/save_post\', \'my_save_post_function\', 15 );

function my_save_post_function($object_id)  { /* do stuff */ }

1 个回复
SO网友:Rendy de Puniet

添加remove_action( \'save_post\', \'my_save_post_function\', 10, 3 ); 在您的my_save_post_function 在进行任何更新之前。