php - 如何从 WP 中的 ACF Image 字段的数组中获取信息?
问题描述
我对 WP 很陌生,所以这似乎是一个非常简单的问题。我正在尝试通过 css 类和高级自定义字段提供背景图片 url。我想这样做,这样我就可以保持课堂清洁干燥。该图像作为自定义字段图像存储在 WP admin 中。这是我的英雄模板代码:
<?php
if (have_posts()) : while (have_posts()) : the_post();
?>
<?php
$hero_img = get_field('hero_image');
?>
<h3>ACF Field Data: <?php the_field('hero_image');?></h3> // just to see what it is
<section class="panel--hero panel--bg-image" <?php $hero_img ? print 'style="--background-image: url("hero_img[5]");"' : ''; ?>>
<div class="panel__content">
<div class="container container__grid page-heading">
<div class="container__col">
<h2 class="page-title center--flex text-white"><?php the_title() ?></h2>
</div>
</div>
<div>
</section>
<?php
endwhile;
endif;
?>
和scss:
&--bg-image {
position: relative;
height: 50vh;
&::after {
background-image: var(--background-image);
background-position: center center;
background-repeat: no-repeat;
background-size: cover;
bottom: 0;
content: '';
display: block;
opacity: var(--opacity);
left: 0;
right: 0;
position: absolute;
top: 0;
z-index: -1;
}
}
没有图像显示。绝对路径是该数组中的第五项,它没有通过。在 JS 中,我通常会循环遍历它,但我认为我已经使用变量声明上方的“if/while”循环做到了。我现在还需要循环 $hero_img 变量吗?如果是这样,那是在 WP/PHP 中执行此操作的最常规方法吗?forEach 是一个选项吗?也许我不清楚仅通过运行 if/while 循环就可以获得数据。任何帮助将非常感激!!谢谢。
解决方案
选项 1 - 使用数组键
假设您使用的是 ACF 并且该字段设置为返回“图像数组”,您可以使用数组键获取图像 url url
,即:
$hero_img_url = $hero_img['url'];
选项 2 - 仅从 ACF 返回 URL
如果您只想获取图像的 URL,您可以在字段的 ACF 设置中将返回格式更改为“图像 URL ”。然后get_field
只返回 url,你可以像现在一样得到它,例如:
$hero_img_url = get_field('hero_image');
补充说明
- 例如,当您使用关联数组(即带键的数组)时,位置无关紧要,因此您不要尝试获取第 5 个元素。您只需使用密钥直接获取值。
- 如果您不确定数组中的内容或键是什么,您可以使用
var_dump($hero_img);
它来准确地向屏幕输出它具有的键和值。
推荐阅读
- reactjs - 如何使用 React js 创建文件树浏览器/视图?
- macos - 无法执行 k8s 模块
- android - android 嵌套 RecyclerView 问题:View.GONE 不会立即调整/重绘嵌套 RecyclerView
- google-cloud-platform - 如何在基于服务器的应用程序中直接使用 Google Cloud IoT 数据?
- mysql - MySQL Cursor 获取特定字段
- azure-devops - .NET Core WebJob 控制台应用程序 CI/CD 使用 Azure DevOps Pipelines
- c# - 如何从 ASP.NET Core 3 控制器中访问 IWebHostEnvironment?
- apache-kafka - Kafka - SaslAuthenticationException:无法配置 SaslClientAuthenticator
- python - 具有分类数据的随机森林仅预测一个类别中的数据
- c# - c# 中未知的 WooCommerce API 版本