PHP if/else get_field() 与 WordPress

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

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

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

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

我希望代码检查标题文本,如果没有,则显示 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' 不存在时,它不会正确输出 Logo 。谁能告诉我我做错了什么或者是否有更好的方法?

提前致谢

最佳答案

如果我没弄错,您的问题不在于 If/Else 语句,而在于 Logo 字段。我假设您在 ACF 中将此字段 (carousel_logo) 正确配置为 Image

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

Return Values for Image fields

Note: In some versions of ACF you'll found Image Object instead of Image Array, but it's conceptually the same.

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

如果您想要最简单的解决方案,请为您的 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 ?>

我对你的代码做了一些改动,但基本上这里的关键行是:

<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 上的官方文档字段类型以获取更多示例和进一步解释。

关于PHP if/else get_field() 与 WordPress,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30578415/

相关文章:

php - 在导航中使用语言按钮切换语言 Wordpress

php - 将图像从 mysql blob 数据库添加到 ZipArchive

php - 如何在 ci4 路由中传递任意数量的参数?

mysql - WordPress 媒体上传数据库错误重复条目

c# - 条件为假,但执行了 if 语句中的代码

javascript - 我如何优化这一长行 "if"语句?

php - Laravel Carbon 数据丢失

php - WordPress 中的 Ajax 和 php 删除错误

css - foundation5 菜单始终响应

JavaScript:尝试理解计算指数值的递归函数的 Else 语句