在哪里触发PUBLISH_POST挂钩?

时间:2014-10-11 作者:zarkoz

publish_post, 它不需要只在发布后运行,它可以用于任何发布类型和任何发布状态,格式为{status}{post\\u type},这也使得它很难在wordpress核心中找到

有人知道它在wordpress核心的确切位置吗?它似乎与wp\\u insert\\u post无关,因为在运行此函数时不会调用它

1 个回复
最合适的回答,由SO网友:gmazzap 整理而成

@shanebp 在OP的注释中建议您,这是函数激发的钩子之一wp_transition_post_status, 在代码中搜索时很难找到它,因为它是一个动态的钩子,实际上激发它的代码行看起来像:

do_action( "{$new_status}_{$post->post_type}", $post->ID, $post );
在哪里$new_status 是在取消更新后发布的新状态,并且$post->post_type 正如你所猜测的那样,是post类型。

那么表单"publish_post" 是唯一一个可能的挂钩,在发布标准帖子类型的帖子时触发,使代码中的同一行示例也会触发"trash_page" 删除页面时,等等。

正如您在source 这是最后一个激活的状态转换挂钩。

有关其他信息和其他信息,请查看Post Status Transitions 抄本中的页面。

如果你介意看一下,函数wp_transition_post_status 在内部调用wp_insert_post 函数,在第行的当前版本中#3431 of wp-includes/post.php.

你可以看到

if ( \'attachment\' !== $postarr[\'post_type\'] ) {
  wp_transition_post_status( $data[\'post_status\'], $previous_status, $post );
}
明确不需要函数和相关挂钩\'attachment\' 岗位类型。

结束

相关推荐

Post publish date

如果我在同一天发布了多篇帖子,the_date() 函数不打印发布日期。我怎样才能修复它?谢谢我通过以下方式解决此问题:the_time(get_option(\'date_format\'));“”