Create a Custom WordPress Page with Advanced Custom Fields
📖 Scenario: You are building a WordPress site for a local bakery. You want to create a custom page template that shows special offers with custom fields for the offer title, description, and expiration date.
🎯 Goal: Build a WordPress page template that uses the Advanced Custom Fields (ACF) plugin to display a special offer with a title, description, and expiration date.
📋 What You'll Learn
Create custom fields for offer_title, offer_description, and offer_expiration using ACF
Create a PHP array with sample offer data
Add a variable to hold the current date for comparison
Use ACF functions to display the offer fields in the template
Show a message if the offer is expired
💡 Why This Matters
🌍 Real World
Many WordPress sites use Advanced Custom Fields to add flexible content areas that site owners can edit easily without coding.
💼 Career
Understanding how to use ACF and PHP together is essential for WordPress developers building custom themes and client sites.
Progress0 / 4 steps
1
Set up sample offer data array
Create a PHP array called $offer with keys 'offer_title', 'offer_description', and 'offer_expiration'. Set the values exactly to 'Spring Sale', 'Get 20% off all cakes.', and '2024-07-01' respectively.
Wordpress
Hint
Use a PHP array with keys and exact string values as shown.
2
Add current date variable
Add a variable called $today and set it to the current date in Y-m-d format using the date() function.
Wordpress
Hint
Use date('Y-m-d') to get the current date string.
3
Display offer fields using ACF functions
Use the_field() function calls to display the offer_title, offer_description, and offer_expiration fields from the $offer array. Use echo with the array values to simulate ACF output.
Wordpress
Hint
Use echo with array values inside HTML tags to show the fields.
4
Show expiration message if offer expired
Add an if statement that compares $today with $offer['offer_expiration']. If $today is greater, echo a paragraph with the text 'This offer has expired.'.
Wordpress
Hint
Use a simple if condition comparing the date strings.
Practice
(1/5)
1. What is the main purpose of the Advanced Custom Fields (ACF) plugin in WordPress?
easy
A. To add and manage extra custom fields without changing the database manually
B. To create new WordPress themes automatically
C. To speed up WordPress site loading times
D. To backup WordPress site data
Solution
Step 1: Understand what ACF does
ACF allows users to add custom fields easily without coding database changes.
Step 2: Compare options
Only To add and manage extra custom fields without changing the database manually describes adding and managing extra fields without manual database edits.
Final Answer:
To add and manage extra custom fields without changing the database manually -> Option A
Quick Check:
ACF purpose = add/manage custom fields [OK]
Hint: ACF is for custom fields, not themes or backups [OK]
Common Mistakes:
Confusing ACF with theme builders
Thinking ACF speeds up site loading
Assuming ACF handles backups
2. Which of the following is the correct way to retrieve a custom field value named subtitle using ACF in a WordPress template?
easy
A. the_field('subtitle');
B. fetch_field('subtitle');
C. get_field('subtitle');
D. custom_field('subtitle');
Solution
Step 1: Identify the correct ACF function for retrieving values
The function get_field() returns the value of a custom field.
Step 2: Check other options
the_field() echoes the value, not returns it; others are invalid functions.
Final Answer:
get_field('subtitle'); -> Option C
Quick Check:
Retrieve field value = get_field() [OK]
Hint: Use get_field() to get value, the_field() to print directly [OK]
Common Mistakes:
Using the_field() when value is needed for logic
Using non-existent functions like fetch_field()
Confusing echo and return functions
3. Consider this code snippet in a WordPress template using ACF:
$subtitle = get_field('subtitle');
if ($subtitle) {
echo "
$subtitle
";
} else {
echo "
No subtitle found
";
}
What will be the output if the custom field subtitle is empty or not set?
medium
A. PHP error will occur
B.
C. Nothing will be displayed
D.
No subtitle found
Solution
Step 1: Understand the if condition
The code checks if $subtitle has a value. If empty or not set, condition is false.
Step 2: Check the else block output
If false, it echoes "
No subtitle found
".
Final Answer:
<h2>No subtitle found</h2> -> Option D
Quick Check:
Empty field triggers else output [OK]
Hint: Empty fields trigger else block output [OK]
Common Mistakes:
Assuming empty string prints empty <h2>
Expecting no output when field is empty
Thinking PHP error occurs on missing field
4. You have this code in your WordPress template:
echo get_field('price');
Sometimes it shows nothing and breaks the page layout. What is the best way to fix this issue?
medium
A. Remove the get_field() call completely
B. Check if the field has a value before echoing it
C. Use the_field() instead of get_field()
D. Change the field name to 'price_value'
Solution
Step 1: Identify the problem cause
Echoing an empty or null field can break layout if no fallback is provided.
Step 2: Apply a check before echoing
Use if (get_field('price')) to ensure value exists before output.
Final Answer:
Check if the field has a value before echoing it -> Option B
Quick Check:
Always check field value before output [OK]
Hint: Always verify field value exists before printing [OK]
Common Mistakes:
Removing field call instead of fixing output
Using the_field() which echoes without checks
Changing field name without updating code
5. You want to display a list of team members with their custom fields: name, role, and photo. Which approach correctly uses ACF to loop through a repeater field called team_members and display each member's info?
hard
A.
if (have_rows('team_members')) {
while (have_rows('team_members')) {
the_row();
echo get_sub_field('name');
echo get_sub_field('role');
echo '';
}
}