如果自定义字段有内容,则显示它,否则隐藏它。

4
我将如下展示一个自定义字段: ```html

我正在这样展示一个自定义字段:

```
<div class="blog_text">
    <img src="<?php the_field('imagen_prensa'); ?>" />
</div>

我希望只有用户上传了图片时,图片才会出现,因为现在如果没有图片,就会出现一个损坏的图片符号。
我尝试过以下方法,但并没有起作用:
<?php if (get_field('imagen_prensa') != ''): ?>
     <img src="<?php the_field('imagen_prensa'); ?>" />
<?php endif; ?>

可以实现吗?
编辑:
使用以下答案后,现在这是代码,但它只显示一个空白页面:
<div id="blog_interior">

        <?php /* Start the Loop */ ?>
        <?php while ( have_posts() ) : the_post(); ?>

            <article>
            <div class="article_date"><?php the_time('d/m/Y'); ?></div>
            <h2><?php echo get_the_title(); ?></h2>
            <div class="blog_text">
                <?php if ( !empty(the_field('imagen_prensa')) ): ?>
                    <img src="<?php echo the_field('imagen_prensa'); ?>" />
                <?php endif; ?>
                <div class="video_prensa"><?php the_field('video_prensa'); ?></div>
                <?php the_content() ?>
            </div>
        </article>

        <?php endwhile; ?>    
            <div class="back">

            </div>
    </div>
4个回答

6

empty empty — 判断变量是否为空

if (!empty(get_field('imagen_prensa'))) {
    // Display image
}

2
尝试使用empty()代替与空字符串的比较。
<?php if (empty(get_field('imagen_prensa')) === false): ?>
    <img src="<?php echo the_field('imagen_prensa'); ?>" />
<?php endif; ?>

empty() 方法还会检查可能返回的值,例如 nullfalse。如果字段可能只包含空格,则可以使用 trim() 函数来清除字符串。


您可以使用var_dump()print_r()来转储get_field('imagen_prensa')的返回值,它可能不是空值(null、false、''、0等)。 - Hikaru-Shindo
正如CE_REAL所提到的,echo命令缺失了。我更新了我的答案以反映这一点。 - Hikaru-Shindo
现在它只是让页面停止加载... 当我放置这段代码时,出现500内部服务器错误:S - user1617218
我进行了编辑,请看看我是怎么做的,但现在只是给我一个白屏。 - user1617218

2
你忘记了echo来实际打印the_field('imagen_prensa')的结果。
使用这个:
```php echo the_field('imagen_prensa'); ```
<?php if ( !empty(the_field('imagen_prensa')) ): ?>
     <img src="<?php echo the_field('imagen_prensa'); ?>" />
<?php endif; ?>

我已经编辑了您的代码,使其更加合乎逻辑,并在缺失的地方添加了echo。我不太熟悉这些结构:

<?php while ( have_posts() ) : the_post(); ?>

我不确定它是否正常工作,但你可以通过像 var_dump(have_posts()); 这样的方式来检查这些变量输出了什么。

你编辑后的代码:

<div id="blog_interior">

    <?php /* Start the Loop */ ?>
    <?php foreach( $posts as $post ): ?>

        <div class="article_date"><?php echo the_time('d/m/Y'); ?></div>
        <h2><?php echo get_the_title(); ?></h2>
        <div class="blog_text">
            <?php if ( !empty(the_field('imagen_prensa')) ): ?>
                <img src="<?php echo the_field('imagen_prensa'); ?>" />
            <?php endif; ?>
            <div class="video_prensa"><?php the_field('video_prensa'); ?></div>
            <?php echo the_content() ?>
        </div>

    <?php endforeach; ?>    
    <div class="back">

    </div>
</div>

这只是给我相同的空白页面,现在它不显示任何内容。 - user1617218
@fxg,我已经编辑了您刚发布的代码,您能解释一下代码中 while 部分的作用吗?或者 var_dump 这些变量的结果。当您说白屏时,我很确定您的 while 循环没有起作用。 - CE_REAL
@fxg 很高兴我能帮到你。 - CE_REAL

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接