php'if exists'语法有问题

时间:2014-11-26 04:41:38

标签: php wordpress

我需要为nbsp(空格)创建一个if语句。

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

这是在一条线的前面:

<h2><?php echo get_post_meta($post->ID, 'the_term', true); echo '&nbsp;'; ?>Example

如果该术语存在,那么它将显示&#39;术语示例&#39;。如果没有,我需要展示&#39;示例&#39;。但是现在,如果没有if,我会得到&#39;实施例&#39 ;.注意丑陋的空间。

我想我以前就是这样做的,使用这个:

<?php if (post_custom('the_term')) {
echo get_post_meta($post->ID, 'the_term', true); echo '&nbsp;';
} else {
echo '';
?>

......但它没有用。服务器错误。

我也试过这个:

<?php $the_term_check = get_post_meta($post->ID, 'the_term', true);
if (!empty($the_term_check))
echo '<h2>'; echo get_post_meta($post->ID, 'the_term', true); echo ' Example'</h2>';
if (empty($the_term_check))
echo'<h2>Example</h2>';
?>

仍然没有。这一个回声&#39;示例&#39;两次 - 其中一个甚至没有正确的HTML标记。

普通的PHP或特定于WordPress的代码都可以使用,因为这会从自定义帖子类型中提取自定义元素 - 如果存在的话。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

您缺少else { echo '';

的右括号

然后这个echo ' Example'</h2>'在“示例”之后有一个引用太多了。

重新写入

<?php if (post_custom('the_term')) {
echo get_post_meta($post->ID, 'the_term', true); echo '&nbsp;';
} else {
echo '';
} // added missing brace
?>

<?php $the_term_check = get_post_meta($post->ID, 'the_term', true);
if (!empty($the_term_check))
echo '<h2>'; echo get_post_meta($post->ID, 'the_term', true); echo ' Example</h2>';
if (empty($the_term_check))
echo'<h2>Example</h2>';
?>

或as,并添加括号(这是一种很好的做法)

<?php 
$the_term_check = get_post_meta($post->ID, 'the_term', true);
    if (!empty($the_term_check)){
       echo '<h2>'; echo get_post_meta($post->ID, 'the_term', true); 
       echo ' Example</h2>';
}
    if (empty($the_term_check)){
       echo'<h2>Example</h2>';
}
?>

答案 1 :(得分:0)

我认为这对你有用。

<h2><?php echo !empty(get_post_meta($post->ID, 'the_term', true)[0]) ? get_post_meta($post->ID, 'the_term', true)[0]."&nbsp;" : ""; ?>Example</h2>