📖 Scenario: You have a WordPress website where you want to show extra information about posts. This extra information is stored in custom fields. You want to learn how to get and show this custom field data inside your theme files.
🎯 Goal: Build a simple WordPress theme snippet that fetches and displays a custom field called subtitle for each post.
📋 What You'll Learn
Create a variable to get the custom field subtitle using get_post_meta()
Set a variable called show_subtitle to control if the subtitle should be shown
Use an if statement to check if show_subtitle is true and the subtitle is not empty
Echo the subtitle inside an HTML <h2> tag with a class post-subtitle
💡 Why This Matters
🌍 Real World
Displaying custom fields is common in WordPress sites to show extra info like subtitles, ratings, or author notes.
💼 Career
Knowing how to fetch and display custom fields is essential for WordPress theme and plugin development jobs.
Progress0 / 4 steps
1
Create a variable to get the custom field data
Create a variable called subtitle that uses get_post_meta() to get the custom field named subtitle for the current post ID get_the_ID(). Set the third parameter to true to get a single value.
Wordpress
Hint
Use get_post_meta(get_the_ID(), 'subtitle', true) to get the custom field value for the current post.
2
Add a configuration variable to control subtitle display
Add a variable called show_subtitle and set it to true to indicate that subtitles should be shown.
Wordpress
Hint
Set $show_subtitle = true; to enable subtitle display.
3
Use an if statement to check and display the subtitle
Write an if statement that checks if $show_subtitle is true and $subtitle is not empty. Inside the if, echo the subtitle wrapped in an <h2> tag with class post-subtitle.
Wordpress
Hint
Use if ($show_subtitle && !empty($subtitle)) to check conditions, then echo the subtitle safely with esc_html().
4
Complete the snippet with proper escaping and HTML structure
Ensure the subtitle is safely escaped using esc_html() inside the <h2> tag with class post-subtitle. This completes the snippet to display custom field data securely.
Wordpress
Hint
Use esc_html() to escape the subtitle text for safe HTML output.
Practice
(1/5)
1. What is the main function used in WordPress to retrieve custom field data for a post?
easy
A. get_post_meta()
B. get_custom_field()
C. fetch_post_data()
D. retrieve_meta()
Solution
Step 1: Identify the WordPress function for custom fields
The standard WordPress function to get custom field data is get_post_meta().
Step 2: Confirm other options are not standard functions
Functions like get_custom_field(), fetch_post_data(), and retrieve_meta() do not exist in WordPress core.
Final Answer:
get_post_meta() -> Option A
Quick Check:
Custom field retrieval = get_post_meta() [OK]
Hint: Remember: WordPress uses get_post_meta() for custom fields [OK]
Common Mistakes:
Confusing function names with non-existent ones
Using get_post_meta() without parameters
Trying to access custom fields like normal variables
2. Which of the following is the correct syntax to get a single custom field value with key 'color' for post ID 42?
easy
A. get_post_meta(42, 'color', true);
B. get_post_meta('color', 42, true);
C. get_post_meta(42, 'color');
D. get_post_meta('color', 42);
Solution
Step 1: Understand get_post_meta() parameters order
The function signature is get_post_meta($post_id, $key, $single). So the post ID comes first, then the key, then whether to return a single value.
Step 2: Check which option matches this order
get_post_meta(42, 'color', true); uses get_post_meta(42, 'color', true); which is correct. Others swap parameters or miss the third argument.
Final Answer:
get_post_meta(42, 'color', true); -> Option A
Quick Check:
Correct parameter order = post ID, key, single [OK]
Hint: Post ID is first, key second, true for single value [OK]
What will be the output if the custom field 'price' for post ID 10 is set to '25.99'?
medium
A. Error: Undefined variable
B. Array
C. NULL
D. 25.99
Solution
Step 1: Understand get_post_meta() with single=true
When the third parameter is true, get_post_meta() returns a single value as a string, not an array.
Step 2: Check the stored value for 'price'
The custom field 'price' for post ID 10 is '25.99', so echoing $value outputs '25.99'.
Final Answer:
25.99 -> Option D
Quick Check:
Single meta value output = 25.99 [OK]
Hint: Use true to get single value, not array [OK]
Common Mistakes:
Expecting an array instead of a string
Not setting the third parameter to true
Assuming NULL if value exists
4. Identify the error in this code snippet:
echo get_post_meta('price', 15, true);
medium
A. Function get_post_meta() does not exist
B. Missing third parameter
C. Parameters are in wrong order
D. Post ID must be a string
Solution
Step 1: Check parameter order in get_post_meta()
The correct order is get_post_meta($post_id, $key, $single). Here, 'price' (key) is first and 15 (post ID) second, which is wrong.
Step 2: Confirm other options are incorrect
The third parameter is present, the function exists, and post ID should be an integer, not string.
Final Answer:
Parameters are in wrong order -> Option C
Quick Check:
Post ID first, key second in get_post_meta() [OK]
Hint: Post ID always comes before key in get_post_meta() [OK]
Common Mistakes:
Swapping post ID and key parameters
Assuming post ID can be string
Omitting required parameters
5. You want to display a custom field 'rating' for the current post inside the Loop, but only if it exists and is not empty. Which code snippet correctly does this?
hard
A. echo get_post_meta('rating', get_the_ID(), true);
B. if ($rating = get_post_meta(get_the_ID(), 'rating', true)) { echo esc_html($rating); }
C. if (get_post_meta('rating')) { echo get_post_meta(get_the_ID(), 'rating'); }
D. echo get_post_meta(get_the_ID(), 'rating');
Solution
Step 1: Retrieve 'rating' for current post with correct parameters
Use get_post_meta(get_the_ID(), 'rating', true) to get a single value for the current post inside the Loop.
Step 2: Check if value exists and sanitize before output
Assign the value to a variable and check if it is truthy (not empty). Use esc_html() to safely display it.
Step 3: Evaluate options
if ($rating = get_post_meta(get_the_ID(), 'rating', true)) { echo esc_html($rating); } correctly does all steps. echo get_post_meta('rating', get_the_ID(), true); swaps parameters. if (get_post_meta('rating')) { echo get_post_meta(get_the_ID(), 'rating'); } uses wrong parameter order and no sanitization. echo get_post_meta(get_the_ID(), 'rating'); echoes without checking if value exists.
Final Answer:
if ($rating = get_post_meta(get_the_ID(), 'rating', true)) { echo esc_html($rating); } -> Option B
Quick Check:
Check existence + sanitize output = if ($rating = get_post_meta(get_the_ID(), 'rating', true)) { echo esc_html($rating); } [OK]
Hint: Assign and check value before echoing, sanitize output [OK]
Common Mistakes:
Swapping post ID and key parameters
Not checking if value exists before echo
Not sanitizing output before display
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.