Leave a Reply

4 comments

  1. You could use the empty function inside your if as such :

    <?php if( empty( get_post_meta( $post->ID, 'price_list_category1', true ) ) ) : ?>style="display:none;"<?php endif; ?>
    

    The above returns an error, you should assign the return value to a variable. See my edit below.

    Warning

    empty might not be the best option depending on the values you store in the meta. Values like false, 0 etc… will be considered empty.

    Check the PHP manual for the full list of values that are considered empty.

    Edit

    You can try assigning the meta to a variable, and using that in the if statement.

     <?php
          $price_list = get_post_meta( $post->ID, 'price_list_category1', true );
     ?>
    

    And then…

     if( empty( $price_list) ) : ?>style="display:none"<?php endif; ?>
    
  2. You can use metadata_exists(); (worked for me)for checking for any post meta and the do whatever you want.

        // Check and get a post meta
    
    if ( metadata_exists( 'post', $post_id, '_meta_key' ) ) {
        $meta_value = get_post_meta( $post_id, '_meta_key', true );
    }
    
  3. I found this via searching for a solution myself, but it dawned on me the answer is very simple. You simply need to check if the value is empty, if it is then echo nothing – if it has content, then display the content – the code i used is below and can be tailored accordingly to anyone who needs to use it.

    <?php $meta = get_post_meta( get_the_ID(), 'page-sub-title', true );
        if ($meta == '') {
            echo '&nbsp;';
        } else {
            echo '<h2>' . $meta . '</h2>';
          }
    ?>