Grow your CSS skills. Land your dream job.

Last updated on:

Using Custom Fields

Dump out all custom fields as a list

<?php the_meta(); ?>

Display value of one specific custom field

<?php echo get_post_meta($post->ID, 'mood', true); ?>

"mood" would be ID value of custom field

Display multiple values of same custom field ID

<?php $songs = get_post_meta($post->ID, 'songs', false); ?>
<h3>This post inspired by:</h3>
<ul>
	<?php foreach($songs as $song) {
		echo '<li>'.$song.'</li>';
	} ?>
</ul>

Display custom field only if exists (logic)

<?php 
    $url = get_post_meta($post->ID, 'snippet-reference-URL', true); 

	if ($url) {
	    echo "<p><a href='$url'>Reference URL</a></p>";
	}
?>

Reference URL

Comments

  1. OMG. This is probably the most useful snippet I have ever come across, the amount of time I have spent in the past trying to remember this!

  2. Thanks. I was just looking for the “Display custom field only if exists (logic)” today for a project and could not find an example that I could understand how to change for my specific case. This snippet is just what I needed.

  3. The logic snippet worked wonderfully for me. Thanks.
    One question though, why haven’t you closed the tag?

  4. Permalink to comment#

    Thank you sooooo much! I adore your snippets!

  5. Very nice quick and easy reference for custom fields. Thanks a lot!

  6. jaffa
    Permalink to comment#

    Hi

    These snippets are great. I was wondering if you could help me.

    I am trying to match the title of a page to a custom field and display any posts that match that custom field.

    Total newbie here to both php and wordpress.

    Any help is much appreciated!

    :)

  7. I solved my problem with Custom fields, thanks

  8. I like to use the following chunk of code in my custom loops. It has a few advantages:
    I can attach ID’s to each custom key/value pair. I can reorder them any way i feel like it. If i need to change the key name for the custom field I can, and it wont break the old posts.. I can just add another chunk that pull up the new key. Any missing key/value pairs collapse to nothing. No broken layout! If I have a set the should be rendered together if the first value is present I can wrap them in opening and closing divs that only render if the first key exists.

    	
    
    			&lt?php if ( get_post_meta($post->ID, '01.0 Unit ID', true) ) : ?>
    				&ltdiv id="unitid" class="feature-pair xclearfix">
    					&ltdiv class="feature-label">Unit ID:&lt/div>
    					&ltdiv class="feature-value">
    					&lt?php echo get_post_meta($post->ID, '01.0 Unit ID', true) ?>
    					&lt/div>
    				&lt/div>
    			&lt?php endif; ?>
    
    
  9. Hey Chris,

    I love your code snippets sections. I was wondering…

    How did you style the blocks around the code that you present on your page?

    Thanks

  10. Michele
    Permalink to comment#

    Hi all, this works great but, let’s imagine I have 2 post with the same author:
    Example

    Track –>
    IS THIS IT by Author “The strokes”
    REPTILIA by Author “The strokes”

    when I put on Author “The Strokes on 2 (or more) different posts The cycle repeats author 2 (or more) times.

    Is there a Way to put something like this:

    The Strokes:
    ‘is this it’
    ‘reptilia’

    Michael Jackson
    ‘Bad’
    ‘Beat it’
    ‘Thriller’

    And so on…

    is this possible?

    • Alexxali
      Permalink to comment#

      Could you please show us your code, if you have it? I’ll try to help if I can.

  11. yeBach
    Permalink to comment#

    I don’t know in what fantasy world this snippet would work @ChrisCoyer, but there is a SYNTAX error while outputing the reference url line.

    <?php 
        $url = get_post_meta($post->ID, 'snippet-reference-URL', true); 
    
        if ($url) {
            echo "<p><a href='$url'>Reference URL</a></p>";
        }
    ?>
    

    THIS IS CORRECT

    <?php 
        $url = get_post_meta($post->ID, 'snippet-reference-URL', true); 
    
        if ($url) {
            echo "<p><a href=' . $url . '>Reference URL</a></p>";
        }
    ?>
    
    • Permalink to comment#

      ID, ‘snippet-reference-URL’, true);

      if ($url) {
      echo “Reference URL“;
      }
      ?>
      you are wrong because double quotes echo append like
      echo “Helllo”.$world.”welcome”;
      don’t use mixed double and single quotes for append

  12. Nick M
    Permalink to comment#

    Would anyone know how to extend the use of WP Custom Fields such as this:

    In my index.php (Blog Feed) I’d like a user with admin privlieges to be able to mark a post as FLAGGED (Turn color red) from the FRONT END. An ideal method would to have a bootstrap glyphicon button (flag) near the post title so that when clicked, the anchor link points to an action URL to update the post meta key ‘flag’ to ‘yes’.

    I plan to use if else statements to toggle this feature.

    My usage is for a VERY basic/simple site. AJAX is not required, I will just redirect the user back to the Front Page after they’ve clicked the action button.

    Let me know if I’m totally off with my approach.

  13. Jo / thedesertecho

    Thank you so much, my template files were leaving all sorts of random custom field text and with this I fixed it just to display what I wanted.

  14. Permalink to comment#

    Thanks. Great solution for dealing with multiple Custom Fields. I have few wordpress sites managed by me and i seldom in search of the custom fields functionality…

  15. Permalink to comment#

    as simple as this is all i need.

    ID, ‘mood’, true); ?>

    thanks!

Leave a Comment

Posting Code

Markdown is supported in the comment area, so you can write inline code in backticks like `this` or multiline blocks of code in in triple backtick fences like ```this```. You don't need to escape code in backticks, Markdown does that for you.

Sadly, it's kind of broken. WordPress only accepts a subset of HTML in comments, which makes sense, because certainly some HTML can't be allowed, like <script> tags. But this stripping happens before the comment is processed by Markdown (via Jetpack). It seems to me that would be reversed, because after Markdown processes code in backticks, it's escaped, thus safe. If you think you can fix this issue, get in touch!

If you need to make sure the code (typically HTML) you post absolutely posts correctly, escape it and put it within <pre><code> tags.

Current ye@r *

*May or may not contain any actual "CSS" or "Tricks".