I have some user-submitted variables that I want to display in a different part of my site like this:
<div class="pre_box">Term: </div>
<div class="entry"><?php $key='term'; echo get_post_meta($post->ID, $key, true); ?></div>
Occasionally, these variables might be empty in which case I don't want to display the label for the empty variable. In the example above I would want to hide the <div class="pre_box">Term: 开发者_StackOverflow社区</div>
part. Is there some simple way to check if a php variable like the one above is empty and prevent the label from being displayed?
Update, here is the code using !empty
<?php $key='term' ?>
<?php if( !empty( $key ) ): ?>
<div class="pre_box">Term: </div>
<div class="entry">
<?php echo get_post_meta($post->ID, $key, true); ?>
</div>
<?php endif; ?>
However, this still displays the content no matter what. I think the problem might be in the way I am defining the $key variable. Im trying to pull data from a custom field set in a wordpress post - thats what the $post->ID business is all about.
<?php
$post_meta = get_post_meta($post->ID, 'term', true);
if (!empty($post_meta)) {
?>
<div class="pre_box">Term: </div>
<div class="entry"><?php echo $post_meta; ?></div>
<?php
}
?>
If isset()
does not work, try empty()
instead:
<?php if( !empty( $key ) ): ?>
<div class="pre_box">Term: </div>
<div class="entry">
<?php echo get_post_meta($post->ID, $key, true); ?>
</div>
<?php endif; ?>
isset()
will deliver TRUE
if the value is set and has a value different from NULL
.
empty()
instead will deliver TRUE
(hence !empty()
results in FALSE
) for:
""
(an empty string)0
(0 as an integer)"0"
(0 as a string)NULL
FALSE
array()
(an empty array)var $var;
(a variable declared, but without a value in a class)
I assume your $key
is set but with an empty string. Thus, empty()
is the way to go here.
<?php if( isset( $var ) ): ?><p><?php echo $var ?></p><?php endif; ?>
If $var is set it will display the paragraph with $var, otherwise nothing will be displayed
Well they way your code is above, $key will never be empty, thus the pre_box will always be displayed. You're setting $key = 'term'
, which gives it a value so !empty($key)
or isset($key)
will always be true.
Casey's solution should give you the result you're going for.
精彩评论