Hooks let you change how WordPress works without changing its core. Priority and arguments help control when and how your code runs with hooks.
You want to run your code before or after other code hooked to the same action or filter.
You need to pass extra information to your hooked function.
You want to make sure your code runs in a specific order among many hooked functions.
Syntax
Wordpress
add_action('hook_name', 'your_function', priority, accepted_args);
// priority is a number (default 10)
// accepted_args is how many arguments your function accepts (default 1)
Lower priority numbers run first. Default is 10.
accepted_args tells WordPress how many arguments to pass to your function.
Examples
Runs my_init_function on 'init' hook with default priority 10 and 1 argument.
Wordpress
add_action('init', 'my_init_function');
Runs my_init_function earlier because priority is 5 (lower than default 10).
Wordpress
add_action('init', 'my_init_function', 5);
Runs my_save_function on 'save_post' hook with default priority 10 and accepts 2 arguments.
This example hooks two functions to the same 'wp_footer' action. The function with priority 10 runs before the one with priority 20.
Wordpress
<?php
function first_function() {
echo "First function runs\n";
}
function second_function() {
echo "Second function runs\n";
}
add_action('wp_footer', 'second_function', 20);
add_action('wp_footer', 'first_function', 10);
// When WordPress runs 'wp_footer' hook, first_function runs before second_function because it has lower priority.
?>
OutputSuccess
Important Notes
If two functions have the same priority, they run in the order they were added.
Make sure your function accepts the number of arguments you specify, or you may get errors.
Summary
Hooks let you add or change WordPress behavior.
Priority controls the order functions run on the same hook.
Accepted arguments tell WordPress how many values to pass to your function.
Practice
(1/5)
1. What does the priority number control when adding a function to a WordPress hook using add_action or add_filter?
easy
A. The order in which functions run on the same hook
B. The number of arguments the function accepts
C. The type of hook (action or filter)
D. The name of the hook to attach to
Solution
Step 1: Understand the role of priority in hooks
Priority determines the sequence functions run when multiple functions are attached to the same hook.
Step 2: Differentiate priority from other parameters
Priority is not about argument count or hook type; it only controls execution order.
Final Answer:
The order in which functions run on the same hook -> Option A
Quick Check:
Priority controls execution order = B [OK]
Hint: Priority sets function run order on hooks [OK]
Common Mistakes:
Confusing priority with argument count
Thinking priority changes hook type
Assuming priority sets hook name
2. Which of the following is the correct syntax to add a function my_function to the init action hook with priority 15 and accepting 2 arguments?
easy
A. add_action('init', 'my_function', 2);
B. add_action('init', 'my_function', 2, 15);
C. add_action('init', my_function, 15, 2);
D. add_action('init', 'my_function', 15, 2);
Solution
Step 1: Recall the parameter order of add_action
The order is hook name, function name (string), priority (default 10), and accepted arguments (default 1).
Step 2: Match parameters to the question
Priority is 15, accepted arguments is 2, so the call is add_action('init', 'my_function', 15, 2);
Final Answer:
add_action('init', 'my_function', 15, 2); -> Option D
Quick Check:
Priority=15, args=2 syntax = D [OK]
Hint: Remember add_action(hook, func, priority, args) order [OK]
B. The function expects 2 arguments but only 1 is accepted in add_filter
C. apply_filters cannot pass more than one argument
D. Function name should be in double quotes
Solution
Step 1: Check function parameter count vs accepted args
Function my_filter expects 2 arguments, but add_filter specifies only 1 argument accepted.
Step 2: Understand consequence of argument mismatch
Only 1 argument will be passed, so $b will be undefined, causing incorrect behavior or error.
Final Answer:
The function expects 2 arguments but only 1 is accepted in add_filter -> Option B
Quick Check:
Accepted args must match function params = A [OK]
Hint: Match accepted args to function parameters [OK]
Common Mistakes:
Ignoring argument count mismatch
Thinking priority 10 is invalid
Believing apply_filters limits arguments
5. You want to add two functions to the same filter hook modify_text. The first function should run before the second and both accept 3 arguments. Which is the correct way to add them?
hard
A. add_filter('modify_text', 'first_func', 5, 3); add_filter('modify_text', 'second_func', 10, 3);
B. add_filter('modify_text', 'first_func', 10, 3); add_filter('modify_text', 'second_func', 5, 3);
C. add_filter('modify_text', 'first_func', 3, 5); add_filter('modify_text', 'second_func', 3, 10);
D. add_filter('modify_text', 'first_func', 3); add_filter('modify_text', 'second_func', 3);
Solution
Step 1: Determine priority order for execution
Lower priority number runs first, so first_func should have lower priority than second_func.
Step 2: Set accepted arguments correctly
Both functions accept 3 arguments, so the fourth parameter in add_filter must be 3 for both.