I have a custom post type called 'software', contained within are various custom fields such as subtitle, price, screenshots, download link, etc. I created a function to allow use of the tinyMCE edit window for some of these custom fields. I have been trying to display these fields on the page but with no success.

The method I'm using is this:

<h1><?php the_title();?></h1>
<h3><?php echo get_post_meta(get_the_ID(), 'subtitle', TRUE); ?></h3>

Here is a link to the page.

Below the <hr/> on the page is a list of all the meta created. The ONLY one of the fields which will display is 'price' for some strange reason.

Anyone have any idea what I'm missing?

  • it is indeed the get_post_meta() function, and if you are calling it inside the loop, it should work... Unless you're not using the right custom field name. They often come with a prefix if they are implemented via a plugin like meta-box. Can you post the code how you declare your custom fields? A solution would be to open the wp_postmeta table in PhpMyAdmin and search the column meta_key for LIKE %...% and specify "subtitle" as meta_key value. You will see exactly under what name Wordpress is storing your custom field. – pixeline Sep 13 '13 at 16:37
  • I know this is old, but I use this sql to get a list of all meta fields in phpmyadmin: SELECT m.meta_key FROM wp_postmeta m GROUP BY m.meta_key – ssaltman Nov 10 '15 at 15:31

Well, you are using:

get_post_meta(get_the_ID(), 'subtitle', TRUE);

So, you are saying to Wordpress to get the meta value of the 'subtitle' field and that the returned value be in format of string. See get_post_meta() docu.

To get all meta data of a post you should use get_post_custom() function instead. For example, if you are inside the loop:

$custom = get_post_custom();
foreach($custom as $key => $value) {
     echo $key.': '.$value.'<br />';

This will return all meta data of the post. If you want to check, for example, the "price" meta field:

if(isset($custom['price'])) {
    echo 'Price: '.$custom['price'][0];
  • Last code block is missing a ) – carbide20 Apr 28 '18 at 23:37
  • 1
    it appears that $custom['price'] returns an array so you may need to do $custom['price'][0] – wal Jun 25 '19 at 14:41

use this code for solving your problem.

$key_name = get_post_custom_values($key = 'Key Name');
echo $key_name[0];

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.