Conditional display for custom fields/taxonomy

If there’s a value for the custom field, I want it to display the value. If there’s no value for the custom field, I want it to display “N/A”. I have this working for custom fields but cant replicate the same functionality for a custom taxonomy.

This works for a custom field:

Read More
$url = get_post_meta( get_the_ID(), 'event-code', true );
if ( ! empty( $url ) ) {
print ( $url );
}
else {
print 'N/A';
}

In the case of a custom taxonomy entry with a value, this displays both the value and “N/A”:

$promtax = the_terms( get_the_ID(), 'promotion','' );
if ( ! empty( $promtax ) ) {
print ( $promtax );
}
else {
print 'N/A';
}

I’ve used variations and combinations of isset, empty without any luck. Thanks.

Related posts

Leave a Reply

2 comments

  1. Use get_the_terms. It will either return an empty array, a WP_Error object, or the terms. So you can check it they exist.

    <?php
    $terms = get_the_terms( $post->ID, 'promotion' );
    if( $terms && ! is_wp_error( $terms ) )
    {
        foreach( $terms as $term )
        {
            // each $term is an object. you could do something like this....
            $link = get_term_link( $term );
            echo '<a href="' . esc_url( $link ) . '">' . esc_attr( $term->name ) . '</a>, ';            
        }
    }
    else
    {
        // no terms found
        echo 'N/A'; 
    }
    

    get_the_term_list would work the same way, but you’ll get less control of the output.

    <?php
    $terms = get_the_term_list( $post->ID, 'promotion', 'Promotions: ', ' ', '' );
    if( $terms && ! is_wp_error( $terms ) )
    {
        // terms found!
        echo $terms;    
    }
    else
    {
        // no terms found
        echo 'n/a';
    }