I need opposite of this:
<?php if ( get_post_meta($post->ID, 'price_list_category1', true) ) : ?>style="display:none;"<?php endif; ?>
In other words I want style="display:none;" only when meta data doesn’t exist.
I thought it would be straightforward like if ( get_post_meta($post->ID, 'price_list_category1', true but this true/false turns out to be a completely different stuff.
any ideas?
Thank you.
Answers:
Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.
Method 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; ?>
Method 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 );
}
Method 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 ' ';
} else {
echo '<h2>' . $meta . '</h2>';
}
?>
Method 4
if( ! in_array( 'given_key', get_post_custom_keys($post_id) ) ) {}
Here it is written: https://developer.wordpress.org/reference/functions/get_post_meta/#user-contributed-notes
get_post_custom_keys Returns an array containing the keys of all custom fields of a particular post or page. For me, this is the best solution 🙂
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0