WordPress 内容发布相关钩子概述
在 WordPress 开发中,理解内容发布流程中的各个钩子(Hooks)对于实现自定义功能至关重要。以下是几个核心的发布相关动作钩子(Action Hooks)及其参数说明。
核心发布钩子
- publish_post:参数为一个(
$post_ID)。在文章被点击“发布”时触发。 - save_post:参数为一个(
$post_ID)。在文章被保存(新建或更新)时触发。 - edit_post:参数为两个(
$post_ID,$post)。在编辑已存在的文章时触发。 - publish_future_post:参数为一个(
$post_ID)。在定时发布的文章到达预设发布时间点时触发。如果设定的时间早于当前时间,则不会触发。 - transition_post_status:参数为三个(
$new_status,$old_status,$post)。功能强大,允许根据文章状态的变化执行特定操作。 - {$old_status}_to_{$new_status}:参数为一个(
$post)。这是一个动态钩子,针对特定的状态转换。例如:draft_to_publish:处理从草稿状态发布为公开状态的事件。future_to_publish:处理从定时状态发布为公开状态的事件。
- post_updated:参数为三个(
$post_ID,$post_after,$post_before)。在已存在的文章被更新后触发。
参数说明
$post:文章对象(WP_Post)。$post_ID:文章 ID(整数)。$post_status:文章状态字符串,包括new,publish,future,draft,pending,private,trash,auto-draft等。$post_type:文章类型字符串,包括post,page,attachment,revision等。
钩子功能对比与选择建议
根据功能复杂度和信息获取能力,这些钩子可以大致排序如下:
- post_updated:功能最强大,可以获取文章修改前后的完整对象,适合需要对比历史数据的复杂逻辑。
- transition_post_status:功能较强,能捕获任何状态变化,适合基于状态流转的通用处理。
- {$old_status}_to_{$new_status}:针对性最强,代码更清晰,适合处理特定的状态转换场景。
- publish_post, save_post, edit_post, publish_future_post:相对简单直接,在只需响应特定、单一事件时使用。
开发者应根据具体业务需求,选择最合适、最精确的钩子,以避免不必要的执行和潜在的性能问题。