使用WordPress的PHP if/else get_field()
我试图在WP后端为客户提供一些选项,以自定义显示在其网站主页上的旋转木马。我使用高级自定义字段来处理从客户机获取输入。我想给他们两个选择: 选项#1)允许客户端插入要显示的文本字符串(“旋转木马标题文本”) 选项#2)允许客户端上载要显示的徽标(“旋转木马徽标”) 我希望代码检查标题文本,如果没有,则显示徽标。我还没有决定如果两个字段都为空会发生什么。不管怎样,以下是我的想法:使用WordPress的PHP if/else get_field(),php,wordpress,if-statement,advanced-custom-fields,Php,Wordpress,If Statement,Advanced Custom Fields,我试图在WP后端为客户提供一些选项,以自定义显示在其网站主页上的旋转木马。我使用高级自定义字段来处理从客户机获取输入。我想给他们两个选择: 选项#1)允许客户端插入要显示的文本字符串(“旋转木马标题文本”) 选项#2)允许客户端上载要显示的徽标(“旋转木马徽标”) 我希望代码检查标题文本,如果没有,则显示徽标。我还没有决定如果两个字段都为空会发生什么。不管怎样,以下是我的想法: <? if( get_field('carousel_title_text') ) { ?> <
<?
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”为空,则不会正确输出徽标。谁能告诉我我做错了什么,或者有没有更好的方法
提前感谢,您已将else条件设置为last,如果客户端不输入文本,将显示默认文本。 您将使用下面的代码
<?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>"
}?>
这是默认的标题客户机指示他没有输入滑块文本
希望对您有用。试试:
<?php
$output = (get_field('carousel_title_text')) ? get_field('carousel_title_text'):get_field('carousel_logo');
echo $output;
?>
如果我答对了,您的问题不在于
If/Else
语句,而在于logo字段。我假设您已将此字段(carousel_logo
)正确配置为ACF中的图像
图像字段提供三种不同的返回值可能性:
注意:在某些版本的ACF中,可以找到图像对象而不是图像数组,但概念上是相同的
如果您只使用_字段('carousel_logo'),它们都不会正确显示您的图像代码>在您的模板中。那么,您是如何获得您的徽标的?
如果您想要最简单的解决方案,请选择图像URL作为徽标字段的返回值,并按如下方式打印:
<?
$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 ?>
其中,'medium'
是用于输出它的标签
另外,请查看关于字段类型的官方文档,以了解更多示例和进一步解释。这听起来好像与徽标的设置有关,我假设它是一个图像字段?在Wordpress管理员中,该字段下有一个名为“返回值”的设置,可以设置为“数组”或“URL”
如果设置为“Array”,则需要将该数组存储到变量,然后在标记中访问其属性,如下所示:
<?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 }
?>
不幸的是,这不起作用。这会产生一个几乎空白的屏幕。试试这个家伙。$field=get\u field($field\u name,$post\u id,$format\u value);
评论不用于扩展讨论;此对话已被取消。
<img class="logo" src="<?= $logo['sizes']['medium'] ?>">
<?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 }
}
?>
<?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 }
?>