📖 Scenario: You are customizing a WordPress site to change how some content appears without editing core files. WordPress filter hooks let you modify data before it shows on the site.
🎯 Goal: Learn how to use common WordPress filter hooks by writing code that changes the site title, modifies post content, and adjusts excerpt length.
📋 What You'll Learn
Create a function to change the site title using the bloginfo filter
Create a function to add text at the end of post content using the the_content filter
Create a function to set the excerpt length to 20 words using the excerpt_length filter
Add the filter hooks with add_filter to connect your functions
💡 Why This Matters
🌍 Real World
WordPress developers often use filter hooks to customize site behavior and appearance without changing core files, making updates safer and easier.
💼 Career
Knowing how to use WordPress filter hooks is essential for WordPress theme and plugin developers to create flexible and maintainable customizations.
Progress0 / 4 steps
1
Create a function to change the site title
Write a function called custom_site_title that takes one parameter $title and returns the string 'My Custom Site'. This will replace the default site title.
Wordpress
Hint
Functions in PHP start with function keyword. The function must return the new title string.
2
Add the filter hook for the site title
Use add_filter to connect the custom_site_title function to the bloginfo filter hook. Write the line: add_filter('bloginfo', 'custom_site_title');
Wordpress
Hint
The add_filter function connects your function to the WordPress filter hook.
3
Create a function to add text at the end of post content
Write a function called append_custom_text that takes one parameter $content and returns the original content plus the string '
Thank you for reading!
' appended at the end.
Wordpress
Hint
Use the dot . operator to join strings in PHP.
4
Add filter hooks for post content and excerpt length
Use add_filter to connect append_custom_text to the the_content filter, and add another function custom_excerpt_length that returns 20 for excerpt length. Connect it to the excerpt_length filter with add_filter('excerpt_length', 'custom_excerpt_length');
Wordpress
Hint
Remember to define the function custom_excerpt_length that returns 20, then add the filter hook.
Practice
(1/5)
1. What is the main purpose of a filter hook in WordPress?
easy
A. To enqueue scripts and styles
B. To add new pages to the WordPress admin menu
C. To create new database tables
D. To modify data before it is displayed or saved
Solution
Step 1: Understand what filter hooks do
Filter hooks allow you to change or modify data before WordPress uses or shows it.
Step 2: Compare options to the definition
Only To modify data before it is displayed or saved describes modifying data before display or saving, which matches filter hooks.
Final Answer:
To modify data before it is displayed or saved -> Option D
Quick Check:
Filter hooks modify data = D [OK]
Hint: Filter hooks change data before use or display [OK]
Common Mistakes:
Confusing filter hooks with action hooks
Thinking filters add new features instead of modifying data
Mixing up filters with script loading
2. Which of the following is the correct syntax to add a filter in WordPress?
easy
A. add_action('the_content', 'my_function');
B. add_filter('the_content', 'my_function');
C. apply_filter('the_content', 'my_function');
D. filter_add('the_content', 'my_function');
Solution
Step 1: Recall the correct function to add a filter
The WordPress function to add a filter is add_filter.
Step 2: Check the syntax of each option
add_filter('the_content', 'my_function'); uses add_filter with correct parameters. Others use wrong function names.
Final Answer:
add_filter('the_content', 'my_function'); -> Option B
Quick Check:
Use add_filter() to add filters = A [OK]
Hint: Use add_filter() to attach filter functions [OK]
The filter changes the title by converting it to uppercase using strtoupper.
Step 2: Apply the filter to the input string
When WordPress applies the filter to 'Hello World', it returns 'HELLO WORLD'.
Final Answer:
"HELLO WORLD" -> Option A
Quick Check:
Filter changes title to uppercase = C [OK]
Hint: Filter returns modified data, here uppercase string [OK]
Common Mistakes:
Assuming original string is unchanged
Confusing add_filter with add_action
Expecting lowercase instead of uppercase
4. Identify the error in this filter hook code:
add_filter('the_content', 'modify_content');
function modify_content($content) {
echo strtoupper($content);
}
medium
A. The filter name 'the_content' is incorrect
B. The function name must start with 'filter_'
C. The function should return the modified content, not echo it
D. add_filter requires three parameters
Solution
Step 1: Review the filter function behavior
Filter functions must return the modified data, not output it directly.
Step 2: Check the code for return vs echo
The function uses echo instead of return, so WordPress won't get the modified content.
Final Answer:
The function should return the modified content, not echo it -> Option C
Quick Check:
Filter functions must return data = B [OK]
Hint: Filter functions must return modified data, not print it [OK]
Common Mistakes:
Using echo instead of return in filter functions
Thinking filter names are arbitrary
Believing add_filter always needs three parameters
5. You want to add a filter that appends " - Powered by WordPress" to every post title but only if the title is not empty. Which code correctly implements this?
hard
A. add_filter('the_title', function($title) {
if ($title !== '') {
return $title . ' - Powered by WordPress';
}
return $title;
});
B. add_filter('the_title', function($title) {
if ($title) {
echo $title . ' - Powered by WordPress';
}
});
C. add_filter('the_title', function() {
return ' - Powered by WordPress';
});
D. add_filter('the_title', function($title) {
return $title . ' - Powered by WordPress';
});
Solution
Step 1: Check the condition for empty title
add_filter('the_title', function($title) {
if ($title !== '') {
return $title . ' - Powered by WordPress';
}
return $title;
}); checks if the title is not empty before appending the text, which matches the requirement.
Step 2: Verify the function returns the modified title
add_filter('the_title', function($title) {
if ($title !== '') {
return $title . ' - Powered by WordPress';
}
return $title;
}); returns the modified title correctly; add_filter('the_title', function($title) {
if ($title) {
echo $title . ' - Powered by WordPress';
}
}); uses echo which is wrong, C ignores the original title, D appends text even if title is empty.
Final Answer:
code with condition and return -> Option A
Quick Check:
Check empty title and return modified string = A [OK]
Hint: Return modified title only if not empty, use return not echo [OK]
Common Mistakes:
Using echo instead of return
Not checking if title is empty
Replacing title instead of appending
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.