Bird
Raised Fist0
Wordpressframework~5 mins

Displaying custom field data in Wordpress

Choose your learning style10 modes available
Introduction

Custom fields let you add extra information to your posts or pages. Displaying this data helps show more details to your visitors.

You want to show a product price on a product page.
You need to display an event date on an event post.
You want to add author bio details that are not in the main content.
You want to show a custom message or note for each post.
Syntax
Wordpress
<?php echo get_post_meta($post->ID, 'custom_field_name', true); ?>

get_post_meta fetches the custom field value by its name.

The third parameter true returns a single value instead of an array.

Examples
Displays the 'price' custom field value for the current post.
Wordpress
<?php echo get_post_meta($post->ID, 'price', true); ?>
Stores the 'event_date' custom field in a variable and then prints it with a label.
Wordpress
<?php $event_date = get_post_meta($post->ID, 'event_date', true);
echo 'Event Date: ' . $event_date; ?>
Checks if a 'note' exists and safely displays it inside a paragraph.
Wordpress
<?php if ($note = get_post_meta($post->ID, 'note', true)) {
  echo '<p>Note: ' . esc_html($note) . '</p>';
} ?>
Sample Program

This code shows the post title, then checks if a 'subtitle' custom field exists. If yes, it displays the subtitle below the title, then shows the main content.

Wordpress
<?php
/* Template part to display a custom field called 'subtitle' */
if (have_posts()) :
  while (have_posts()) : the_post();
    the_title('<h1>', '</h1>');
    $subtitle = get_post_meta(get_the_ID(), 'subtitle', true);
    if ($subtitle) {
      echo '<h2>' . esc_html($subtitle) . '</h2>';
    }
    the_content();
  endwhile;
endif;
?>
OutputSuccess
Important Notes

Always use esc_html() or similar functions to safely output custom field data to avoid security issues.

Custom fields are stored per post, so use get_the_ID() or $post->ID to get the current post ID.

If a custom field is empty, check before displaying to avoid showing empty spaces.

Summary

Custom fields add extra info to posts or pages.

Use get_post_meta() to get and display this data.

Always check and sanitize the data before showing it.

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

  1. Step 1: Identify the WordPress function for custom fields

    The standard WordPress function to get custom field data is get_post_meta().
  2. 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.
  3. Final Answer:

    get_post_meta() -> Option A
  4. 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

  1. 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.
  2. 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.
  3. Final Answer:

    get_post_meta(42, 'color', true); -> Option A
  4. Quick Check:

    Correct parameter order = post ID, key, single [OK]
Hint: Post ID is first, key second, true for single value [OK]
Common Mistakes:
  • Swapping post ID and key parameters
  • Omitting the third parameter for single value
  • Passing key as first argument
3. Given the code snippet:
$value = get_post_meta(10, 'price', true);
echo $value;

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

  1. 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.
  2. 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'.
  3. Final Answer:

    25.99 -> Option D
  4. 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

  1. 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.
  2. Step 2: Confirm other options are incorrect

    The third parameter is present, the function exists, and post ID should be an integer, not string.
  3. Final Answer:

    Parameters are in wrong order -> Option C
  4. 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

  1. 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.
  2. 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.
  3. 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.
  4. Final Answer:

    if ($rating = get_post_meta(get_the_ID(), 'rating', true)) { echo esc_html($rating); } -> Option B
  5. 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 unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard