我有一个使用自定义字段的网站,如果正在使用该字段,我想要显示该字段的内容,如果每个帖子没有使用该字段,那么当然不显示字段的内容。
似乎下面的代码不正确,因为当Post没有使用任何自定义字段时,它会在else块中显示内容。
非常感谢任何帮助!
以下是Post Edit,显示我在代码中调用的字段未被使用(http://screencast.com/t/aBjt1drIw)。
我已经确认,当我输入自定义字段的值时,它是在Post中输出的。
以下是我正在使用的代码:
<?php
$pdfurl = get_post_meta($post->ID, 'pdf', true);
$wordurl = get_post_meta($post->ID, 'word', true);
if( !empty($pdf) || !empty($word) ){
?>
<?php /* show nothing then */ } else { ?>
<div id="post_downloads_box">
<h3 class="single_related_footer">Dfownload Now</h3>
<div id="post_downloads_box_left">
<a target="_blank" href="<?php echo get_post_meta($post->ID, 'pdf', true); ?>"><img src="<?php bloginfo('template_url'); ?>/images/post_pdf_icon.jpg" /></a>
</div>
<div id="post_downloads_box_right">
<a target="_blank" href="<?php echo get_post_meta($post->ID, 'word', true); ?>"><img src="<?php bloginfo('template_url'); ?>/images/post_word_icon.jpg" /></a>
</div>
</div>
<?php } ?>
答案 0 :(得分:1)
你的代码块有点令人困惑......部分是因为你的逻辑没有考虑如果帖子有PDF自定义字段而不是Word自定义字段会发生什么......你仍然会显示两个集合标记。相反,我会建议:
<?php if( get_post_meta($post->ID, 'pdf', true) && get_post_meta($post->ID, 'word', true) ) : ?>
<div id="post_downloads_box">
<h3 class="single_related_footer">Download Now</h3>
<div id="post_downloads_box_left">
<a target="_blank" href="<?php echo get_post_meta($post->ID, 'pdf', true); ?>"><img src="<?php bloginfo('template_url'); ?>/images/post_pdf_icon.jpg" /></a>
</div>
<div id="post_downloads_box_right">
<a target="_blank" href="<?php echo get_post_meta($post->ID, 'word', true); ?>"><img src="<?php bloginfo('template_url'); ?>/images/post_word_icon.jpg" /></a>
</div>
</div>
<?php endif; ?>
这将检查两个自定义字段,如果缺少任何一个字段,它会跳过呈现标记并“不显示任何内容”。如果两者都在那里,它会呈现你的标记。
答案 1 :(得分:0)
反转第一个陈述的逻辑将是理想的解决方案。
<?php
$pdfurl = get_post_meta($post->ID, 'pdf', true);
$wordurl = get_post_meta($post->ID, 'word', true);
if( empty($pdf) && empty($word) ) {
?>
<div id="post_downloads_box">
<h3 class="single_related_footer">Dfownload Now</h3>
<div id="post_downloads_box_left">
<a target="_blank" href="<?php echo get_post_meta($post->ID, 'pdf', true); ?>"><img src="<?php bloginfo('template_url'); ?>/images/post_pdf_icon.jpg" /></a>
</div>
<div id="post_downloads_box_right">
<a target="_blank" href="<?php echo get_post_meta($post->ID, 'word', true); ?>"><img src="<?php bloginfo('template_url'); ?>/images/post_word_icon.jpg" /></a>
</div>
</div>
<?php } ?>
注意虽然这是反转逻辑,但似乎不正确。如果两者都是空的,这将显示下载链接。以下内容应为您的if
声明。
if (!empty($pdf) || !empty($word))
答案 2 :(得分:-2)
似乎这更好:
<?php $values = get_post_custom_values("pdf"); if (isset($values[0])) {?>
<div id="post_downloads_box">
<h3 class="single_related_footer">Dfownload Now</h3>
<div id="post_downloads_box_left">
<a target="_blank" href="<?php echo get_post_meta($post->ID, 'pdf', true); ?>"><img src="<?php bloginfo('template_url'); ?>/images/post_pdf_icon.jpg" /></a>
</div>
<div id="post_downloads_box_right">
<a target="_blank" href="<?php echo get_post_meta($post->ID, 'word', true); ?>"><img src="<?php bloginfo('template_url'); ?>/images/post_word_icon.jpg" /></a>
</div>
</div>
<?php } else {} ?>