Php WordPress";保存“U post”;仅在保存帖子时调用,不在更新时调用

Php WordPress";保存“U post”;仅在保存帖子时调用,不在更新时调用,php,wordpress,Php,Wordpress,当文章通过API保存时,我试图将文章数据发送到第三方服务。我正在使用hookadd_操作('save_post',[$this,'save_post_callback',100,3)但是这个钩子似乎是在updatepost和admin面板中的post-new.php中调用的。因此,为了避免在post-new.php中运行这个钩子,我已经检查了$\u post请求,但是我无法过滤更新帖子,因为我只想在保存帖子中调用API,而不是在更新中调用API 回调函数$update中似乎有第三个参数,但它也不

当文章通过API保存时,我试图将文章数据发送到第三方服务。我正在使用hook
add_操作('save_post',[$this,'save_post_callback',100,3)
但是这个钩子似乎是在updatepost和admin面板中的post-new.php中调用的。因此,为了避免在post-new.php中运行这个钩子,我已经检查了
$\u post
请求,但是我无法过滤更新帖子,因为我只想在保存帖子中调用API,而不是在更新中调用API

回调函数
$update
中似乎有第三个参数,但它也不起作用。下面是我的代码,只需要在save a post中调用,但它不起作用。任何帮助都将不胜感激

 function save_post_callback( $post_id, $post, $update ) {
    // (!$update) => this doesnot seems to work
    if(!empty($_POST) && $post->post_type == "post"){
        //run only when save post
    }
}
来自StackExchange。比较post_日期和post_修改以确定它是一篇新文章似乎是一个聪明的方法

$is_new = $post->post_date === $post->post_modified;

if ( $is_new ) {
    // first publish
}

简单的方法是检查
\uwp\uhttp\ureferer
最后一部分是否为post new.php

下面是一个简单的代码

function save_post_callback($post_id, $post, $update)
{
    // (!$update) => this doesnot seems to work
    if ( ! empty($_POST) && $post->post_type == "post" ){
        $end = explode('/', $_POST[ '_wp_http_referer' ]);
        $end = end($end);
        if($end == 'post-new.php'){
            //echo 'it is new post';exit();
            //do what you want here.
        }
    }
}

尝试检查post id。在第一次保存时,不应该有一个i thnkElse。您可以在执行api操作时设置一个元字段,然后可以在enxt保存时检查此值。非常感谢您提供了此引用逻辑。我会试试这个,让你知道。