这是一份(希望是)全面的 WordPress 2.1 及以上版本可用操作钩子的列表。更多信息:
- 要了解过滤器和操作钩子是什么,请参阅 插件 API。
- 要了解一般插件编写知识,请参阅 插件手册。
- 关于过滤器钩子的参考列表,请参阅 插件 API/过滤器参考。
(如果您想添加或澄清此文档,请遵循现有条目的风格。描述操作何时运行,如果操作函数接受参数,请描述这些参数。)
典型请求期间运行的操作
当已登录用户打开主页时会调用这些操作,此列表可能已过时。此列表可能仅显示每次调用操作的第一个实例,并且在许多情况下没有函数挂钩到该操作。主题和插件可能导致操作在请求期间被多次调用并在不同时间调用。作为证明,您可以在此列表中看到特定于 Twenty Eleven 主题的操作调用。Cron 任务也可能在用户访问站点时触发,从而增加额外的操作调用。此列表应被视为 WordPress 操作执行顺序的指南或近似值,而不是具体规范。
操作通过函数 do_action() 调用,除非标记为 (ref array) 的操作,它们通过函数 do_action_ref_array() 调用。
| muplugins_loaded | 必须使用插件加载之后。 |
| registered_taxonomy | 用于分类、post_tag、等。 |
| registered_post_type | 用于文章、页面、等。 |
| plugins_loaded | 在活动插件加载之后,可插拔函数加载之前。 |
| sanitize_comment_cookies | 当评论 Cookie 被清理时。 |
| setup_theme | 主题加载之前。 |
| load_textdomain | 用于 default 域 |
| after_setup_theme | 通常用于初始化主题设置/选项。这是主题可用的第一个操作钩子,在激活主题的 functions.php 文件加载后立即触发。add_theme_support() 应在此处调用,因为 init 操作钩子对于添加某些功能来说太晚了。在此阶段,当前用户尚未通过身份验证。 |
| auth_cookie_malformed | |
| auth_cookie_valid | |
| set_current_user | |
| init | 通常由插件用于初始化。此时当前用户已通过身份验证。 |
| └─ widgets_init | 用于注册侧边栏。在 'init' 优先级 1 时触发(因此在优先级 ≥ 1 的 'init' 操作之前!) |
| register_sidebar | 用于每个侧边栏和页脚区域 |
| wp_register_sidebar_widget | 用于每个小工具 |
| wp_default_scripts | (引用数组) |
| wp_default_styles | (引用数组) |
| admin_bar_init | |
| add_admin_bar_menus | |
| wp_loaded | WordPress 完全加载之后 |
| parse_request | 允许操纵 HTTP 请求处理(引用数组) |
| send_headers | 允许自定义 HTTP 头(引用数组) |
| parse_query | 查询变量设置之后(引用数组) |
| pre_get_posts | 在执行查询之前暴露查询变量对象。(引用数组) |
| posts_selection | 由缓存插件使用。 |
| wp | WP 对象设置之后(引用数组) |
| template_redirect | 确定加载哪个模板之前。 |
| get_header | 加载头部模板文件之前。不适用于区块主题。 |
| wp_enqueue_scripts | 脚本和样式入队时。 |
| twentyeleven_enqueue_color_scheme | (Twenty Eleven 专用) |
| wp_head | 用于在前端 head 标签中打印脚本或数据。 |
| wp_print_styles | 在 $handles 队列中的样式打印之前。 |
| wp_print_scripts | 在 $handles 队列中的脚本打印之前。 |
| get_search_form | |
| loop_start | (引用数组) |
| the_post | (引用数组)允许在查询后立即修改帖子对象 |
| get_template_part_content | 内容的模板部分 |
| loop_end | (引用数组) |
| get_sidebar | 加载侧边栏模板文件之前。 |
| dynamic_sidebar | 在调用小工具的显示回调之前。 |
| get_search_form | |
| pre_get_comments | (引用数组) |
| wp_meta | 在侧边栏中显示回显内容之前。 |
| get_footer | 加载页脚模板文件之前。不适用于区块主题。 |
| get_sidebar | 加载侧边栏模板文件之前。不适用于区块主题。 |
| twentyeleven_credits | (Twenty Eleven 专用) |
| wp_footer | 确定加载哪个模板之前。 |
| wp_print_footer_scripts | 打印页脚脚本时。 |
| admin_bar_menu | (引用数组) |
| wp_before_admin_bar_render | 渲染管理栏之前。 |
| wp_after_admin_bar_render | 渲染管理栏之后。 |
| shutdown | PHP 执行即将结束之前。 |
在管理员页面请求期间运行的操作
这些操作在已登录用户打开 帖子 页面时运行。此列表仅显示操作首次被调用的情况,在许多情况下没有函数挂钩到该操作。每个管理员页面都有一组不同的操作列表,具体取决于页面的目的和安装的插件。此列表应视为指南或近似值,而非具体的规范。
在这些操作中,(hookname) 取决于页面。对于帖子页面,它是 edit.php,或者对于主题的“背景”页面,它是 appearance_page_custom-background。
操作通过函数 do_action() 调用,除非标记为(引用数组),它们通过函数 do_action_ref_array() 调用。
文章、页面、附件和分类操作(管理后台)
post_submitbox_misc_actions:当生成编辑页面以向提交框(显示发布按钮的区域)添加某些内容(例如字段)时运行。无函数参数。
add_attachment:当附加文件首次添加到数据库时运行。动作函数参数:附件 ID。
add_category:与 create_category 相同。
{$taxonomy}_add_form_fields:当在管理后台创建分类法添加表单时运行。适用于在提交按钮之前在此表单中添加字段。例如 category_add_form_fields。
{$taxonomy}_edit_form:当在管理后台创建分类法术语编辑表单时运行。适用于向此表单添加新字段。
clean_post_cache:当清理文章缓存时运行。动作函数参数:文章 ID。参见 clean_post_cache()。
create_{$taxonomy}:当创建新的分类法术语时运行。动作函数参数:术语 ID。
delete_attachment:在附件文件从数据库删除之前运行。操作函数参数:附件 ID。(2.8 版本之前,此钩子在附件删除后触发。)
delete_{$taxonomy}:在分类法术语从数据库删除并更新其对应的链接/帖子以移除该术语后运行。操作函数参数:术语 ID。
wp_trash_post:当文章或页面即将被移入回收站时运行。操作函数参数:文章或页面 ID。
trashed_post:当文章或页面刚刚被移入回收站后运行。操作函数参数:文章或页面 ID。
untrash_post:在恢复文章或页面(即取消删除)之前运行。操作函数参数:文章或页面 ID。
untrashed_post:在恢复文章或页面(即取消删除)之后运行。操作函数参数:文章或页面 ID。
before_delete_post:当文章或页面即将被删除时运行。此时评论、附件和元数据仍然可用。操作函数参数:文章或页面 ID。
delete_post:当文章或页面即将被删除时运行。此时评论、附件和元数据已被删除。操作函数参数:文章或页面 ID。
deleted_post:在文章或页面刚刚被删除后运行。操作函数参数:文章或页面 ID。
edit_attachment:当附件文件被编辑/更新到数据库时运行。操作函数参数:附件 ID。
edit_category:当分类法被更新/编辑时运行,包括添加/删除文章或博客圈链接或其分类法(这会导致分类法的计数更新)。操作函数参数:分类法 ID。
edit_post:当文章或页面被更新/编辑时运行,包括添加或更新评论(这会导致文章的评论计数更新)。操作函数参数:文章或页面 ID。
pre_post_update:在文章或页面即将被更新之前运行。操作函数参数:文章或页面 ID。
post_updated:在文章或页面被更新后运行。操作函数参数:文章或页面 ID,以及更新前后的 WP_Post 对象。
transition_post_status:当发生任何文章状态转换时运行。操作函数参数:$new_status,$old_status,$post 对象。(另见 文章状态转换。)
(旧状态)to(新状态):当文章状态从 $old_status 转换为 $new_status 时运行。操作函数参数:$post 对象。(另见 文章状态转换。)
{$new_status}_{$post->post_type}:当类型为 $post_type 的文章从任何其他状态转换到 $status 时运行。操作函数参数:文章 ID,$post object。(另见 文章状态转换。)
publish_post(未弃用):当文章被发布,或者被编辑且其状态更改为“已发布”时运行。此操作钩子符合 {$new_status}_{$post->post_type} 类型的操作钩子。操作函数参数:文章 ID,$post object。(另见 文章状态转换。)
publish_page:当页面被发布,或者被编辑且其状态更改为“已发布”时运行。此操作钩子符合 {$new_status}_{$post->post_type} 类型的操作钩子。操作函数参数:文章 ID,$post object。(另见 文章状态转换。)
publish_phone:在通过电子邮件添加文章后立即运行。操作函数参数:文章 ID。
save_post:每当创建或更新文章或页面时运行,这可能来自导入、文章/页面编辑表单、xmlrpc 或通过电子邮件发布的文章。操作函数参数:文章 ID 和文章对象。在数据保存到数据库后运行。注意,文章 ID 可能引用的是文章修订版而不是最后保存的文章。请使用 wp_is_post_revision() 获取真实文章 ID。
updated_postmeta:当元数据被更新时运行。
wp_insert_post:与 save_post 相同,在其后立即运行。
xmlrpc_publish_post:当文章通过 XMLRPC 请求被发布,或者通过 XMLRPC 编辑且其状态为“已发布”时运行。操作函数参数:文章 ID。
分类法与术语
create_term:在新术语创建后、术语缓存清理前运行。
created_term:在新术语创建后、术语缓存清理后运行。
create_$taxonomy:在为特定分类法创建新术语后运行。
created_$taxonomy:在特定分类法中新术语创建后、术语缓存清理后运行。
add_term_relationship(自 2.9.0 版本起):在添加对象 - 术语关系之前运行。
added_term_relationship(自 2.9.0 版本起):在添加对象 - 术语关系之后运行。
set_object_terms(自 2.8.0 版本起):在设置对象的术语后运行。
edit_terms(自 2.9.0 版本起):在给定的术语被编辑之前运行。
edited_terms:在数据库中保存分类法/分类变更之后运行。
edit_term_taxonomy:在更新术语 - 分类法关系之前运行。
edited_term_taxonomy:在更新术语 - 分类法关系之后运行。
edit_term_taxonomies(自 2.9.0 版本起):在将要删除的术语的子项重新分配父级之前运行。
edited_term_taxonomies(自 2.9.0 版本起):在将要删除的术语的子项重新分配父级之后运行。
edit_$taxonomy:在特定分类法中的术语被编辑后运行。
edited_$taxonomy:在特定分类法中的术语被编辑后、术语缓存清理后运行。
pre_delete_term(自 4.1.0 版本起):在对文章或术语进行任何修改之前运行。
delete_term_taxonomy(自 2.9.0 版本起):在将术语分类法 ID 从数据库删除后(在更改子项术语之后)运行。
deleted_term_taxonomy(自 2.9.0 版本起):在分类法术语 ID 被删除后运行。
delete_term(自 2.5.0 版本起):在术语从数据库删除且缓存已清理后运行。(参数:$Term_ID, $Term_taxonomy_ID, $Taxonomy_slug, $already_deleted_term)
delete_$taxonomy(自 2.3.0 版本起):在特定分类法中的术语被删除后运行。(参数:$Term_ID, $Term_taxonomy_ID, $already_deleted_term)
delete_term_relationships(自 2.9.0 版本起):在对象 - 术语关系被删除前运行。
deleted_term_relationships(自 2.9.0 版本起):在对象 - 术语关系被删除后运行。
clean_object_term_cache(自 2.5.0 版本起):在对象术语缓存清理后运行。
clean_term_cache(自 2.5.0 版本起):在每个分类法的术语缓存清理后运行。
split_shared_term(自 4.2.0 版本起):在先前共享的分类法术语被拆分为两个独立术语后运行。
pre_term_{$field}:在分类法术语数据保存到数据库前运行。例如,pre_term_description。
pre_{$taxonomy}_{$field}:在术语字段保存到数据库前运行。例如,pre_category_description。
评论、Ping 和 Trackback 操作
comment_closed:当尝试显示评论输入表单时,如果文章被标记为不允许评论,则运行此操作。操作函数参数:文章 ID。
comment_id_not_found:当尝试显示评论或评论输入表单时,如果未找到文章 ID,则运行此操作。操作函数参数:文章 ID。
comment_flood_trigger:当检测到评论洪水攻击时,在调用 wp_die 阻止接受该评论之前运行。操作函数参数:上一条评论的时间,当前评论的时间。
comment_{$old_status}_to_{$new_status}:当评论状态发生转换时运行。操作函数参数:评论对象。
comment_on_draft:当尝试显示评论输入表单或评论时,如果文章是草稿,则运行此操作。操作函数参数:文章 ID。
comment_post:在评论刚保存到数据库后立即运行。操作函数参数:评论 ID,审批状态(“spam",或 0/1 分别表示未批准/已批准)。
edit_comment:在评论在数据库中更新/编辑后运行。操作函数参数:评论 ID。
delete_comment:在评论即将从数据库删除前立即触发。操作函数参数:评论 ID。
deleted_comment:在评论刚刚从数据库删除后立即触发。操作函数参数:评论 ID。
trash_comment:在评论即将移入回收站前立即触发。操作函数参数:评论 ID。
trashed_comment:在评论刚刚移入回收站后立即触发。操作函数参数:评论 ID。
untrash_comment:在评论即将从回收站恢复前立即触发。操作函数参数:评论 ID。
untrashed_comment:在评论刚刚从回收站恢复后立即触发。操作函数参数:评论 ID。
spam_comment:在评论即将被标记为垃圾邮件前立即触发。操作函数参数:评论 ID。
spammed_comment:在评论刚刚被标记为垃圾邮件后立即触发。操作函数参数:评论 ID。
unspam_comment:在评论即将取消垃圾邮件标记前立即触发。操作函数参数:评论 ID。
unspammed_comment:在评论刚刚取消垃圾邮件标记后立即触发。操作函数参数:评论 ID。
pingback_post:当向文章添加 Ping 时运行。操作函数参数:评论 ID。
pre_ping:在 Ping 完全处理之前运行。操作函数参数:待处理的帖子链接数组,以及文章的 "pung" 设置。
trackback_post:当向文章添加 Trackback 时运行。操作函数参数:评论 ID。
wp_blacklist_check:用于检查评论是否应被列入黑名单。操作函数参数:作者姓名,作者邮箱,作者 URL,评论内容,作者 IP 地址,作者的用户代理(浏览器)。您的函数可以执行 wp_die 来拒绝评论,或者修改其中一个输入参数,使其包含 WordPress 选项中设置的黑名单关键词之一。
wp_insert_comment:每当创建评论时运行。
wp_set_comment_status:当评论状态改变时运行。操作函数参数:评论 ID,指示新状态的字符串(“delete",“approve",“spam",“hold")。
友情链接操作
add_link:当新的友情链接首次添加到数据库时运行。操作函数参数:链接 ID。
delete_link:当友情链接被删除时运行。操作函数参数:链接 ID。
edit_link:当友情链接被编辑时运行。操作函数参数:链接 ID。
订阅源操作
atom_entry:在 Atom 订阅源的每个博客条目信息打印后(但在关闭条目标签前)运行。
atom_head:在 Atom 订阅源中打印博客信息后,第一个条目出现前运行。
atom_ns:在 Atom 订阅源的根 XML 元素内部运行(用于添加命名空间)。
commentrss2_item:在评论订阅源中打印单个评论信息后(但在关闭项目标签前)运行。操作函数参数:评论 ID,文章 ID。
do_feed_{$feed}:在生成订阅源时运行,其中 feed 是订阅源类型(rss2, atom, rdf 等)。使用小于 10 的优先级以在打印订阅源之前运行。操作函数参数:true(订阅源用于评论)或 false(用于文章)。
rdf_header:在 RDF 订阅源中打印博客信息后,第一个条目出现前运行。
rdf_item:在 RDF 订阅源的每个博客条目信息打印后(但在关闭项目标签前)运行。
rdf_ns:在 RDF 订阅源的根 XML 元素内部运行(用于添加命名空间)。
rss_head:在 RSS 订阅源中打印博客信息后,第一个条目出现前运行。
rss_item:在 RSS Feed 中的每个博客条目打印完条目信息后(但在关闭 item 标签之前)运行。
rss2_head:在 RSS 2 Feed 中打印完博客信息后、第一个条目之前运行。
rss2_item:在 RSS 2 Feed 中的每个博客条目打印完条目信息后(但在关闭 item 标签之前)运行。
rss2_ns:在 RSS 2 Feed 的根 XML 元素内部运行(用于添加命名空间)。
模板操作
after_setup_theme:在主题初始化期间运行。通常用于执行主题的基本设置、注册和初始化操作。
comment_form:在由 comment_form() 渲染的评论表单底部运行,位于闭合
comment_form_after:在由 comment_form() 渲染的评论表单之后运行,位于闭合
do_robots:当模板文件选择器确定这是 robots.txt 请求时运行。
do_robotstxt:在 do_robots() 函数运行期间,在该函数打印 robots.txt 文件的 Disallow 列表之前运行。
get_footer:当模板调用 get_footer() 函数时运行,在加载 footer.php 模板文件之前。
get_header:当模板调用 get_header() 函数时运行,在加载 header.php 模板文件之前。
switch_theme:当博客主题更改时运行。动作函数参数:新主题的名称。如果在主题中使用,仅当添加该动作的主题是被禁用的主题时才有效。
after_switch_theme:当博客主题更改时运行。动作函数参数:新主题的名称。如果在主题中使用,仅当添加该动作的主题是被启用的主题时才有效。可用于在启用主题时运行特定代码。
load-themes.php:当主题被激活或停用(替换为其他主题)时运行。
template_redirect:在确定用于显示请求页面的模板文件之前运行。
wp_footer:当模板调用 wp_footer() 函数时运行,通常在博客页面底部附近。
wp_head:当模板调用 wp_head() 函数时运行。此钩子通常放置在页面模板顶部附近,位于
wp_meta:当 sidebar.php 模板文件调用 wp_meta() 函数时运行,允许插件将内容插入侧边栏。
wp_print_scripts:在 WordPress 将注册的 JavaScript 脚本打印到页面头部之前运行。
管理操作
activate_{$plugin}:在插件首次激活时运行。请参阅 Function_Reference/register_activation_hook。
activity_box_end:在管理仪表板屏幕上的活动框末尾运行。
add_category_form_pre:在管理菜单中将添加分类表单显示在屏幕上之前运行。
add_option_{$option}:在由 add_option() 函数添加 WordPress 选项后运行。动作函数参数:选项名称、选项值。必须为希望响应的特定选项添加动作,例如使用 'add_option_foo' 来响应“foo"选项被添加的情况。
add_option:在选项添加到数据库之前运行。
added_option:在选项添加完成后运行。
admin_head:在 HTML
admin_head-{$hook_suffix}:在 HTML
admin_init:在渲染每个管理页面之前,于所有管理页面开始时运行。请参阅 wp-admin/admin.php、wp-admin/admin-post.php 和 wp-admin/admin-ajax.php。
admin_post_{$action}:另见:admin_post_nopriv_{$action} – 处理未指定的 GET 或 POST 请求。
admin_footer:在管理面板内部、body 标签结束时运行。
admin_enqueue_scripts:在 HTML 头部运行,以便插件或主题可以向所有管理页面入队 JavaScript 和 CSS。
admin_print_scripts:在 HTML 头部运行,以便插件可以向所有管理页面添加 JavaScript 脚本。
admin_print_scripts-{$hook_suffix}:用于在特定插件生成的管理页面的 HTML head 部分打印 JavaScript 脚本。在使用任何向管理菜单添加插件菜单项的函数时,会返回 (page_hook):例如 add_management_page()、add_options_page() 等。示例:
function myplugin_menu() {
if ( function_exists( 'add_management_page' ) ) {
$page = add_management_page( 'myplugin', 'myplugin', 'manage_options', 'myplugin_slug', 'myplugin_admin_page' );
add_action( "admin_print_scripts-$page", 'myplugin_admin_head' );
}
}admin_print_styles:在 HTML 头部运行,以便插件可以向所有管理页面添加 CSS/样式表。
admin_print_styles-{$hook_suffix}:当应为特定管理页面使用 wp_enqueue_style() 入队样式时运行。使用 add_submenu_page() 等函数的返回值来确定 (page_hook) 的值。
check_passwords:在创建新用户时验证密码的双重输入。动作函数参数:登录名数组、第一个密码、第二个密码。
dbx_post_advanced:在管理菜单中的页面编辑屏幕的“高级”部分底部运行。
dbx_post_sidebar:在管理菜单中的页面编辑屏幕的侧边栏底部运行。
dbx_post_advanced:在管理菜单中的帖子编辑屏幕的“高级”部分底部运行。
dbx_post_sidebar:在管理菜单中的帖子编辑屏幕的侧边栏底部运行。在 WordPress 2.5 及更高版本中使用 add_meta_box()。
deactivate_{$plugin}:当插件被停用后运行。
delete_option_{$option}:在 delete_option() 函数删除 WordPress 选项后运行。操作函数参数:选项名称。您必须为特定的选项添加操作,例如 'delete_option_foo',以便在选项 "foo" 被删除时做出响应。
delete_option:在选项从数据库中被删除之前运行。
deleted_option:在选项被删除后运行。
delete_user:当用户被删除时运行。操作函数参数:用户 ID。
edit_category_form:在添加/编辑分类表单显示到屏幕后运行(但在 HTML 表单标签结束之前)。
edit_category_form_pre:在管理菜单中显示编辑分类表单之前运行。
edit_tag_form:在添加/编辑标签表单显示到屏幕后运行(但在 HTML 表单标签结束之前)。
edit_tag_form_pre:在管理菜单中显示编辑标签表单之前运行。
edit_form_top:在 WordPress 文章编辑屏幕(以及自定义文章类型)的标题之前、初始隐藏字段(user_ID、action 等)之后,在表单内部运行。
edit_form_after_title:在 WordPress 文章编辑屏幕(以及自定义文章类型)的标题之后、内置的 WordPress 内容区域之前运行。
edit_form_after_editor:在 WordPress 文章编辑器之后立即运行,但在所有其他元数据框之前。自定义文章类型中也可用。
edit_form_advanced:在管理菜单中的文章编辑表单的“高级”部分之前立即运行。
edit_page_form:在管理菜单中的页面编辑表单的“高级”部分之前立即运行。
edit_user_profile:在管理菜单中的用户个人资料编辑屏幕末尾附近运行。
load-{$pagenow}:当加载管理菜单页面时运行。通常不会直接添加此操作——有关如何添加管理菜单的更多详细信息,请参阅 添加管理菜单。如果您确实想直接使用它,add_options_page() 和类似函数的返回值会提供操作名称中的"(page)"部分。
login_form:在登录表单结束前立即运行。
login_head:在登录页面的 HTML head 部分结束前立即运行。
lost_password:在登录屏幕上打印“通过电子邮件检索您的密码”表单之前运行。
lostpassword_form:在用于通过电子邮件检索用户密码的表单结束时运行,以便插件可以附加额外字段。
lostpassword_post:当用户请求发送电子邮件以检索其密码时运行,以便插件可以在处理之前修改 PHP $_POST 变量。
manage_link_custom_column:当管理屏幕中存在未知的列名时运行。操作函数参数:列名、链接 ID。另见 插件 API/过滤器参考 中的过滤器 ,该过滤器用于添加自定义列。
manage_posts_custom_column:当管理文章的管理屏幕中存在未知的列名时运行。操作函数参数:列名、文章 ID。另见 manage_posts_columns 过滤器(位于 插件 API/过滤器参考 中),该过滤器用于添加自定义列。(示例和用法请参见 Scompt 的教程)。
manage_pages_custom_column:当管理页面的管理屏幕中存在未知的列名时运行。操作函数参数:列名、页面 ID。另见 manage_pages_columns 过滤器(位于 插件 API/过滤器参考 中),该过滤器用于添加自定义列。
manage_media_custom_column:当管理媒体的管理屏幕中存在未知的列名时运行。操作函数参数:列名、页面 ID。另见 manage_media_columns 过滤器(位于 插件 API/过滤器参考 中),该过滤器用于添加自定义列。
manage_{$post->post_type}_posts_custom_column:当管理自定义文章类型的管理屏幕中存在未知的列名时运行。操作函数参数:列名、文章 ID。另见 manage_{$post_type}_posts_columns 过滤器,该过滤器用于为自定义文章类型添加自定义列。
password_reset:在将用户密码重置为随机新密码之前运行。
personal_options_update:当用户从管理屏幕更新个人选项时运行。
plugins_loaded:在所有插件加载完成后运行。
profile_personal_options:在用户个人资料编辑屏幕的“个人选项”部分结束时运行。
profile_update:当用户个人资料更新时运行。操作函数参数:用户 ID。
quick_edit_custom_box:在创建快速编辑器时存在未知列名时运行。
register_form:在新用户注册表单结束前立即运行。
register_post:在处理新用户注册请求之前运行。
restrict_manage_posts:在管理菜单中将待编辑的文章列表显示到屏幕之前运行。
retrieve_password:在检索用户密码时运行,以便向其发送提醒电子邮件。操作函数参数:登录名。
set_current_user:在默认 wp_set_current_user() 函数更改用户后运行。注意 wp_set_current_user() 也是一个“可插拔”函数,意味着插件可以覆盖它;请参阅 插件 API)。
show_user_profile:在用户个人资料编辑屏幕末尾附近运行。
sidebar_admin_page:在小部件管理页面的主要内容之后运行。
sidebar_admin_setup:在编辑侧边栏中显示的小部件时早期运行。
update_option_{$option}:在 update_option() 函数更新 WordPress 选项后运行。操作函数参数:旧选项值,新选项值。您必须为希望响应的特定选项添加操作,例如使用 'update_option_foo' 来响应选项 "foo" 被更新的情况。
update_option:在选项更新到数据库之前运行。
updated_option:在选项更新后运行。
user_new_form:在“添加新用户”屏幕的末尾附近运行。操作函数参数:在多站点环境中传递字符串 "add-existing-user",在单站点及网络管理员中传递 "add-new-user"。
user_profile_update_errors:在更新的用户详细信息提交到数据库之前立即运行。
wpmu_new_user:当用户在多站点环境中首次创建个人资料时运行。操作函数参数:用户 ID。如果不在多站点环境中,请使用 user_register。
user_register:当用户个人资料首次创建时运行。操作函数参数:用户 ID。
welcome_panel:允许您在仪表板中隐藏欢迎面板。这也是一个智能过滤器,会隐藏相关的屏幕选项。
wp_ajax_{$action}:以及:wp_ajax_nopriv_{$action} – 用于处理未知类型的 AJAX 请求处理器。
wp_authenticate:在用户登录时验证用户身份。操作函数参数:包含用户名和密码的数组。
wp_login:当用户登录时运行。
wp_logout:当用户登出时运行。
高级操作
本节包含与 WordPress 用于确定显示哪些帖子的查询、WordPress 循环、激活插件以及其他基础级 WordPress 代码相关的操作。
activated_plugin:任何插件成功激活时都会运行
add_meta_boxes:在“编辑帖子”页面加载时运行。(3.0+)
admin_menu:在基本管理面板菜单结构就位后运行。
network_admin_notices:在管理菜单打印到网络管理屏幕后运行。
user_admin_notices:在管理菜单打印到用户管理屏幕后运行。
admin_notices:在管理菜单打印到非网络或用户管理的屏幕后运行。
all_admin_notices:在管理菜单打印到所有屏幕后运行。
blog_privacy_selector:在屏幕上打印默认博客隐私选项后运行。
check_admin_referer:在默认的 check_admin_referrer() 函数中,在出于安全目的检查 nonce 后运行,允许插件强制 WordPress 因额外安全原因而终止。请注意,check_admin_referrer 也是一个“可插拔”函数,意味着插件可以覆盖它;请参阅 插件 API)。
check_ajax_referer:在默认的 check_ajax_referer() 函数中运行(该函数在 AJAX 请求发送到 wp-admin/admin-ajax.php 脚本时被调用),在用户的登录名和密码通过 Cookie 成功验证后,允许插件强制 WordPress 因额外安全原因而终止。请注意,check_ajax_referer 也是一个“可插拔”函数,意味着插件可以覆盖它;请参阅 插件 API)。
customize_controls_enqueue_scripts:在 WP 主题自定义器初始化(调用 customize_controls_init)、其动作/回调执行完毕且其自身的样式和脚本已入队后触发。您可以使用此钩子为 WP 主题自定义器注册自己的脚本和样式。适用于 主题自定义 API(自 版本 3.4 起)。
customize_register:在每个请求上运行,允许开发者注册新的主题选项和控制项以配合 主题自定义 API 使用(自 版本 3.4 起)。
customize_preview_init:允许您仅在主题自定义器中直接入队资源(如 JavaScript 文件)。适用于 主题自定义 API(自 版本 3.4 起)。
deactivated_plugin:任何插件成功停用时会运行
generate_rewrite_rules:在重写规则生成后运行。操作函数参数:按引用传递 WP_Rewrite 对象($wp_rewrite)。请注意,使用 rewrite_rules_array 过滤器比使用此操作更容易来修改重写规则。
init:在 WordPress 完成加载但在发送任何标头之前运行。可用于拦截 $_GET 或 $_POST 触发器。
loop_end:在处理完 WordPress 循环中的最后一篇帖子后运行。
loop_start:在处理 WordPress 循环中的第一篇帖子之前运行。
network_admin_menu:在为 网络 管理页面准备基本菜单结构时运行。(管理菜单)
parse_query:在 主查询 或任何 WP_Query 实例(如 query_posts、get_posts 或 get_children)的查询解析结束时运行。操作函数参数:按引用传递 WP_Query 对象。
parse_request:在主 WordPress 函数 wp 内部解析查询请求后运行。操作函数参数:按引用传递 WP 对象($wp)。
pre_get_posts:在 主查询 或任何 WP_Query 实例(如 query_posts()、get_posts() 或 get_children())执行查询之前运行。此钩子在查询变量对象创建后但在实际运行查询前被调用,可用于在运行前修改主查询。另请参阅 is_main_query()。操作函数参数:按引用传递 WP_Query 对象。
sanitize_comment_cookies:在从 HTTP 请求中读取 Cookie 后运行。
send_headers:在 WordPress 主函数 wp() 内部发送基本 HTTP 头之后运行。动作函数参数:WP 对象($wp)按引用传递。
shutdown:在页面输出完成时运行。
update_{$meta_type}_meta:当元数据被保存时运行。
updated_{$meta_type}_meta:当元数据已被更新时运行。
upgrader_process_complete:当插件下载器/升级器类完成运行时运行。
wp_loaded:此钩子在 WP、所有插件和主题完全加载并实例化后触发一次。
wp:在查询解析且帖子加载后,但在任何模板执行之前,于 WordPress 主函数 wp() 内部执行。如果你需要访问帖子数据但无法使用模板进行输出,此钩子非常有用。动作函数参数:WP 对象($wp)按引用传递。
管理员登录操作
本节包含 WordPress 管理员登录页面用于处理显示、身份验证、注册、重置密码、忘记密码以及其他用户处理的动作。
login_init:在登录表单初始化时触发。
login_form_{$action}:在指定的登录表单动作之前触发。
login_enqueue_scripts:为登录页面加载脚本和样式。
login_head:在脚本加载后,于登录页面头部触发。
login_header:在打开 body 标签后,于登录页面头部触发。
login_form:在登录表单的“密码”字段之后触发。
lostpassword_post:在密码重置请求返回错误之前触发。
admin_email_confirm:在管理员邮箱确认表单之前触发。
admin_email_confirm_form:在管理员邮箱确认表单标签内部、隐藏字段之前触发。
lost_password:在丢失密码表单之前触发。
lostpassword_form:在丢失密码表单标签内部、隐藏字段之前触发。
validate_password_reset:在密码重置程序验证之前触发。
resetpass_form:在用户密码重置表单的“强度指示器”计量条之后触发。
register_form:在用户注册表单的“电子邮件”字段之后触发。
user_request_action_confirmed:当用户确认账户操作时触发动作钩子。
login_footer:在登录页面页脚触发。
延伸阅读
- 插件手册 – 如何编写插件的描述
- 插件 API – 关于如何使用过滤器和动作的文章
- 插件 API/过滤器参考 – 过滤器钩子的参考列表
- 插件资源 – 全面的插件相关资源列表
- 钩子数据库 – 官方 WordPress 代码参考中所有钩子的文档。
- WordPress 钩子数据库,一个包含所有 WordPress 钩子的数据库,显示它们来自哪个版本,并链接到使用它们的源代码位置