how to display custom data from custom post types
If the metadata shows up when editing posts of the type, then yes, it must have been successfully stored in the DB.
There's two wp functions to retrieve the custom post type's metadata: get_post_custom_values
and get_post_meta
. The difference being, that get_post_custom_values
can access non-unique custom fields, i.e. those with more than one value associated with a single key. You may choose to use it for unique fields also though - question of taste.
Assuming, that your post type is called "obituary":
// First lets set some arguments for the query:// Optionally, those could of course go directly into the query,// especially, if you have no others but post type.$args = array( 'post_type' => 'obituary', 'posts_per_page' => 5 // Several more arguments could go here. Last one without a comma.);// Query the posts:$obituary_query = new WP_Query($args);// Loop through the obituaries:while ($obituary_query->have_posts()) : $obituary_query->the_post(); // Echo some markup echo '<p>'; // As with regular posts, you can use all normal display functions, such as the_title(); // Within the loop, you can access custom fields like so: echo get_post_meta($post->ID, 'birth_date', true); // Or like so: $birth_date = get_post_custom_values('birth_date'); echo $birth_date[0]; echo '</p>'; // Markup closing tags.endwhile;// Reset Post Datawp_reset_postdata();
A word of caution, to avoid confusion:Leaving out the boolean in get_post_meta
will make it return an array rather than a string. get_post_custom_values
always returns an array, which is why, in the above example, we're echoing the $birth_date[0]
, rather than $birth_date
.
Also I'm not 100% certain at the moment, whether $post->ID
will work as expected in the above. If not, replace it with get_the_ID()
. Both should work, one will for sure. Could test that, but saving myself the time...
For the sake of completeness, check the codex on WP_Query
for more query arguments and correct usage.