使用WordPress的PHP if / else get_field()

时间:2015-06-01 16:20:26

标签: php wordpress if-statement advanced-custom-fields

我正在尝试向客户端提供WP后端的一些选项,以自定义在其网站主页上显示的轮播。我正在使用高级自定义字段来处理从客户端获取输入。我想给他们两个选择:

选项#1)允许客户端插入要显示的文本字符串('carousel_title_text')

选项#2)允许客户上传要显示的徽标('carousel_logo')

我希望代码检查标题文本,如果没有,则显示徽标。我还没有决定如果两个字段都是空的会发生什么。无论如何,这就是我想出的:

<?
if( get_field('carousel_title_text') ) { ?>
  <h2 class="promo"><?php the_field('carousel_title_text');?></h2>
<? } elseif( get_field('carousel_logo') ) {
  the_field('carousel_logo');
}
?>

只要有输入,就会显示'carousel_title_text',但是当它为空并且'carousel_logo'不是时,它就无法正确输出徽标。任何人都可以告诉我我做错了什么或者是否有更好的方法?

提前致谢,

4 个答案:

答案 0 :(得分:0)

你已经把else条件放在最后,如果客户端不输入文字或标识,那么将显示默认文本。 你会用下面的代码。

<?php  
 if( get_field('carousel_title_text') ) { ?>
  <h2 class="promo"><?php the_field('carousel_title_text');?></h2>
<?php } elseif( get_field('carousel_logo') ) {
  the_field('carousel_logo');
}else {
  echo " <h2 class="promo"> Default slider title </h2>"
}?>

它的默认标题客户端表示他没有输入滑块文本

希望它对你有用。

答案 1 :(得分:0)

尝试:

<?php 
 $output = (get_field('carousel_title_text')) ? get_field('carousel_title_text'):get_field('carousel_logo');

 echo $output;
?>

答案 2 :(得分:0)

如果我做得对,问题不在于If/Else语句,而在于徽标字段。我假设您已在ACF中将此字段(carousel_logo)正确配置为图像

图像字段提供三种不同的返回值可能性:

Return Values for Image fields

  

注意:在某些版本的ACF中,您发现了图像对象而不是图像阵列,但它已经找到了图像对象在概念上是一样的。

如果您只是在模板中使用the_field('carousel_logo');,他们都不会正确显示您的图片。那么,你如何获得你的徽标?

如果您想要最简单的解决方案,请为您的徽标字段选择 图片网址 作为返回值并按以下方式打印:

<?
$title = get_field('carousel_title_text');
$logo = get_field('carousel_logo');

if (!empty($title)) : ?>
    <h2 class="promo"><?= $title ?></h2>
<?php elseif (!empty($logo)) : ?>
    <img class="logo" src="<?= $logo ?>">
<?php else: ?>
    <!-- No title, no logo -->
<?php endif ?>

我已经改变了一些你的代码,但基本上这里的关键是:

<img class="logo" src="<?= $logo ?>">

这个或等同的:

<img class="logo" src="<?php echo $logo ?>">
当标题丢失时,

应显示您的图像。

加分:如果您要处理不同的缩略图尺寸,我建议您使用图像数组作为返回值 。在这种情况下,$logo将是一个包含所有信息的数组(例如大小,所有缩略图URL,标题等)。

使用:

<img class="logo" src="<?= $logo['sizes']['medium'] ?>">

其中'medium'是您输出的thumbnail size标签。

此外,请查看ACF's Image字段类型的官方文档,以获取更多示例和进一步说明。

答案 3 :(得分:0)

这听起来像与徽标的设置有关,我假设这是一个图像字段?在Wordpress管理员中,该字段下将存在一个名为“返回值”的设置,可以将其设置为“数组”或“ URL”。

如果将其设置为“数组”,则需要将该数组存储到一个变量,然后像这样访问其在标记中的属性:

<?php

    if ( get_field('carousel_title_text') ) { ?>
        <h2 class="promo"><?php the_field('carousel_title_text'); ?></h2>
    <?php } else{
        $carousel_logo = get_field('carousel_logo');
        if ( $carousel_logo ) { ?>
            <img src="<?php echo $carousel_logo['url']; ?>" />
        <?php } else { ?>
            <h2 class="promo">Default slider title </h2>
        <?php }
    }

?>

或者,您可以将字段设置为仅返回图像URL,然后像这样访问它:

<?php

    if ( get_field('carousel_title_text' ) { ?>
        <h2 class="promo"><?php the_field('carousel_title_text'); ?></h2>
    <?php } elseif ( $carousel_logo ) { ?>
        <img src="<?php the_field('carousel_logo'); ?>" />
    <?php } else { ?>
        <h2 class="promo">Default slider title </h2>
    <?php }

?>

ACF's documentation on the Image field将为此提供更多信息。