📖 Scenario: You are building a simple WordPress plugin that modifies the footer text. You want to learn how to use hooks with different priorities and how to pass and use arguments in your hooked functions.
🎯 Goal: Create a WordPress plugin that uses the add_filter hook to change the footer text. You will set up the hook with different priorities and handle arguments passed to the hooked function.
📋 What You'll Learn
Create a function that modifies the footer text
Use add_filter to hook the function to admin_footer_text
Set a custom priority for the hook
Make the hooked function accept and use arguments passed by the hook
💡 Why This Matters
🌍 Real World
WordPress developers often customize themes and plugins by using hooks with specific priorities and arguments to control how and when their code runs.
💼 Career
Understanding hook priority and arguments is essential for WordPress plugin and theme development jobs, enabling developers to write clean, compatible, and maintainable code.
Progress0 / 4 steps
1
Create the footer text function
Create a function called custom_footer_text that takes one argument called $text and returns the string 'Custom footer text.'
Wordpress
Hint
Define a function with one parameter and return the exact string.
2
Hook the function to admin_footer_text with default priority
Use add_filter to hook the function custom_footer_text to the admin_footer_text hook with the default priority and specify that it accepts 1 argument.
Wordpress
Hint
Use add_filter with priority 10 and 1 argument.
3
Change the hook priority to 20
Modify the add_filter call to set the priority to 20 while keeping the function name custom_footer_text, hook admin_footer_text, and 1 argument.
Wordpress
Hint
Change the priority number to 20 in the add_filter call.
4
Modify the function to append text using the argument
Change the custom_footer_text function so it appends the string ' - Powered by WordPress' to the $text argument and returns the combined string.
Wordpress
Hint
Use string concatenation to add the extra text to the argument.
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.