wordpress钩子save_post新建文章的时候也会触发

作者

今天无意中发现wordpress新建文章的时候,触发了钩子save_post, 本以为这个钩子,只有在保存文章的时候才会触发。然后查询官网对这个钩子有了新的理解。这个钩子一共有三个参数 ( $post_ID, WP_Post $post, bool $update ) ,通过第三个参数可以判断是否一个新建的文章。

官网地址

https://developer.wordpress.org/reference/hooks/save_post/

do_action( 'save_post', int $post_ID, WP_Post $post, bool $update )
/*
$update
(bool) Whether this is an existing post being updated or not.
如果是现有个更新日志为 true
*/

所有通过 $update 参数可以判断当前是在更新还是新建文章。通过钩子的名字中带有save, 意思是保存的时候,wordpress新建点击新建的时候,就是产生一次保存操作, 通过两个方面可以印证。
1. 查看数据表 wp_posts
2. 打印 $post_ID

add_action('save_post', 'senlin_test', 3, 10);
function senlin_test($post_id, $post, $update) {
    var_dump($post_id); die();
}

运行这段代码,可以看到,每次点击新建的时候都会产生一个新的数字。

了解更多的wordpress文章相关的钩子

首先了解下,wordpress中一篇文章的状态有哪些 一共9种
https://codex.wordpress.org/Post_Status_Transitions
new – When there’s no previous status (this means these hooks are always run whenever "save_post" runs.
publish – 已经发布的文章
pending – 等待审核的文章
draft – 草稿状态
auto-draft – 自动草稿状态,没有内容的新文章
future – 计划将来准备发布的文章
private – 没有登录的用户是不可见的
inherit – 继承,历史版本
trash – 放入回收站的文章

简单的解释一下 继承是什么个情况? 什么时候会出现这个。
比如你刚写了一半的文章,没写完。存个草稿,这个草稿的状态通常是就是 ihherit, 当然你可以存储任意多个草稿。如果这个这篇文章发布了,中间一个或者多个草稿就是都是发布状态了。所以可以用来存储多个版本。

  1. publish_post
  2. save_post
  3. edit_post
  4. publish_future_post
  5. transition_post_status
  6. {$old_status}to{$new_status}
  7. **future_to_publish **
  8. post_updated

回复

电子邮件地址不会被公开。