Php WordPress";保存“U post”;仅在保存帖子时调用,不在更新时调用
当文章通过API保存时,我试图将文章数据发送到第三方服务。我正在使用hookPhp 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中似乎有第三个参数,但它也不
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保存时检查此值。非常感谢您提供了此引用逻辑。我会试试这个,让你知道。