Categorized reference of frequently-used WordPress action and filter hooks.
Initialization Actions
Core Bootstrap
| Hook | When it Fires | Typical Use |
|---|
muplugins_loaded | After MU plugins load | MU plugin initialization |
plugins_loaded | After all plugins load | Plugin initialization, loading textdomains |
setup_theme | Before theme loads | Theme prerequisites |
after_setup_theme | After theme loads | Theme setup, add_theme_support() |
init | After WP fully loads, before headers | Register CPTs, taxonomies, shortcodes |
wp_loaded | After WP and all plugins/themes load | Late initialization |
wp | After WP query is parsed | Query-dependent setup |
Admin Initialization
| Hook | When it Fires | Typical Use |
|---|
admin_init | First thing on admin pages | Admin-only setup, option registration |
admin_menu | When admin menu is created | Add menu/submenu pages |
admin_bar_menu | When admin bar is created | Add admin bar items |
current_screen | After current screen is set | Screen-specific setup |
REST API
| Hook | When it Fires | Typical Use |
|---|
rest_api_init | When REST API initializes | Register REST routes |
Request Lifecycle Actions
Frontend
| Hook | When it Fires | Typical Use |
|---|
template_redirect | Before template loads | Redirects, access control |
wp_enqueue_scripts | Frontend script/style enqueue point | Enqueue CSS/JS |
wp_head | Inside <head> | Meta tags, inline CSS |
wp_body_open | After <body> opens | Skip links, tracking scripts |
wp_footer | Before </body> | Deferred scripts, analytics |
shutdown | After response sent | Cleanup, logging |
Admin
| Hook | When it Fires | Typical Use |
|---|
admin_enqueue_scripts | Admin script/style enqueue point | Enqueue admin CSS/JS |
admin_head | Inside admin <head> | Admin-specific styles |
admin_footer | Admin footer | Admin scripts |
admin_notices | Top of admin pages | Display notices |
Content Actions
Posts
| Hook | When it Fires | Typical Use |
|---|
save_post | Post is saved | Custom meta, validation |
save_post_{post_type} | Specific post type saved | Type-specific processing |
wp_insert_post | After post inserted/updated | Post processing |
before_delete_post | Before post deleted | Cleanup related data |
delete_post | Post is deleted | Remove related data |
trashed_post | Post moved to trash | Soft-delete handling |
transition_post_status | Post status changes | Status change notifications |
| Hook | When it Fires | Typical Use |
|---|
comment_post | Comment is saved | Comment processing |
wp_insert_comment | Comment inserted | Comment notifications |
delete_comment | Comment deleted | Cleanup |
transition_comment_status | Comment status changes | Moderation handling |
Terms & Taxonomies
| Hook | When it Fires | Typical Use |
|---|
create_term | Term is created | Term processing |
edit_term | Term is edited | Term updates |
delete_term | Term is deleted | Cleanup |
set_object_terms | Terms assigned to object | Relationship handling |
User Actions
Authentication
| Hook | When it Fires | Typical Use |
|---|
wp_login | User logs in | Login tracking, redirects |
wp_logout | User logs out | Cleanup |
wp_login_failed | Login attempt fails | Security logging |
auth_cookie_valid | Auth cookie validated | Session management |
User Management
| Hook | When it Fires | Typical Use |
|---|
user_register | New user created | Welcome emails, defaults |
profile_update | User profile updated | Profile processing |
delete_user | User deleted | Cleanup user data |
set_user_role | User role changes | Role-based setup |
| Hook | When it Fires | Typical Use |
|---|
add_attachment | Attachment uploaded | Post-upload processing |
edit_attachment | Attachment edited | Attachment updates |
delete_attachment | Attachment deleted | Cleanup |
wp_handle_upload | File uploaded | Custom upload handling |
| Hook | When it Fires | Typical Use |
|---|
widgets_init | Widget area registration | Register sidebars/widgets |
dynamic_sidebar | Sidebar renders | Sidebar customization |
init | Block registration point | Register blocks (with register_block_type) |
Cron Actions
| Hook | When it Fires | Typical Use |
|---|
wp_scheduled_delete | Daily | Trash cleanup |
wp_update_plugins | Twice daily | Plugin update checks |
wp_update_themes | Twice daily | Theme update checks |
| Custom hooks | As scheduled | Background tasks |
Content Filters
Titles & Content
| Hook | What it Filters | Return Type |
|---|
the_title | Post title | string |
the_content | Post content | string |
the_excerpt | Post excerpt | string |
get_the_excerpt | Raw excerpt | string |
the_content_more_link | "Read more" link | string |
wp_trim_excerpt | Auto-generated excerpt | string |
Post Data
| Hook | What it Filters | Return Type |
|---|
the_permalink | Post permalink | string |
post_link | Post type permalink | string |
post_type_link | CPT permalink | string |
the_author | Author display name | string |
get_the_date | Post date | string |
the_category | Category list | string |
the_tags | Tag list | string |
Query Filters
Pre-Query
| Hook | What it Filters | Return Type |
|---|
pre_get_posts | WP_Query before execution | void (modify $query) |
query_vars | Registered query vars | array |
request | Request query vars | array |
SQL Modification
| Hook | What it Filters | Return Type |
|---|
posts_where | WHERE clause | string |
posts_join | JOIN clause | string |
posts_orderby | ORDER BY clause | string |
posts_distinct | DISTINCT clause | string |
posts_fields | SELECT fields | string |
posts_clauses | All clauses | array |
posts_request | Complete SQL query | string |
Post-Query
| Hook | What it Filters | Return Type |
|---|
the_posts | Query results | WP_Post[] |
found_posts | Total found posts | int |
Template Filters
Classes
| Hook | What it Filters | Return Type |
|---|
body_class | Body CSS classes | array |
post_class | Post wrapper classes | array |
nav_menu_css_class | Menu item classes | array |
comment_class | Comment classes | array |
Template Selection
| Hook | What it Filters | Return Type |
|---|
template_include | Template file path | string |
single_template | Single post template | string |
archive_template | Archive template | string |
search_template | Search template | string |
404_template | 404 template | string |
Navigation Filters
| Hook | What it Filters | Return Type |
|---|
wp_nav_menu | Complete menu HTML | string |
wp_nav_menu_items | Menu items HTML | string |
wp_nav_menu_objects | Menu item objects | array |
nav_menu_link_attributes | Menu link attributes | array |
walker_nav_menu_start_el | Menu item element | string |
| Hook | What it Filters | Return Type |
|---|
upload_mimes | Allowed MIME types | array |
wp_handle_upload_prefilter | Upload before processing | array |
wp_generate_attachment_metadata | Attachment metadata | array |
image_size_names_choose | Image size options | array |
intermediate_image_sizes | Image sizes to generate | array |
wp_get_attachment_image_attributes | Image tag attributes | array |
Authentication Filters
| Hook | What it Filters | Return Type |
|---|
authenticate | Authentication result | WP_User|WP_Error |
login_redirect | Post-login redirect URL | string |
logout_redirect | Post-logout redirect URL | string |
login_url | Login page URL | string |
lostpassword_url | Password reset URL | string |
Permission Filters
| Hook | What it Filters | Return Type |
|---|
user_has_cap | User capabilities | array |
map_meta_cap | Meta capability mapping | array |
editable_roles | Roles user can assign | array |
show_admin_bar | Admin bar visibility | bool |
REST API Filters
| Hook | What it Filters | Return Type |
|---|
rest_pre_dispatch | Pre-dispatch (short-circuit) | mixed |
rest_request_before_callbacks | Before route callbacks | WP_REST_Response|WP_Error |
rest_request_after_callbacks | After route callbacks | WP_REST_Response|WP_Error |
rest_prepare_{post_type} | Post response | WP_REST_Response |
rest_prepare_comment | Comment response | WP_REST_Response |
rest_prepare_user | User response | WP_REST_Response |
Email Filters
| Hook | What it Filters | Return Type |
|---|
wp_mail | Email arguments | array |
wp_mail_from | From address | string |
wp_mail_from_name | From name | string |
wp_mail_content_type | Content type | string |
Option Filters
| Hook | What it Filters | Return Type |
|---|
pre_option_{option} | Before retrieving | mixed (short-circuit) |
option_{option} | Retrieved value | mixed |
pre_update_option_{option} | Before updating | mixed |
default_option_{option} | Default value | mixed |
Script & Style Filters
| Hook | What it Filters | Return Type |
|---|
script_loader_tag | Script tag HTML | string |
style_loader_tag | Style tag HTML | string |
script_loader_src | Script URL | string |
style_loader_src | Style URL | string |
Cron Filters
| Hook | What it Filters | Return Type |
|---|
cron_schedules | Available schedules | array |
pre_schedule_event | Before scheduling | null|bool |
pre_unschedule_event | Before unscheduling | null|bool |
Block Editor Filters
| Hook | What it Filters | Return Type |
|---|
allowed_block_types_all | Allowed blocks | array|bool |
block_editor_settings_all | Editor settings | array |
render_block | Block output HTML | string |
render_block_{block_name} | Specific block output | string |
block_categories_all | Block categories | array |