1) 更正回显字符串的格式
你的右引号和分号在你的回显字符串中不合适。
这是更正后的标记:
<?php
if (get_sub_field('rls_status') == "ONLINE") {
echo '<div class="online">Status: ONLINE</div>';
} elseif (get_sub_field('rls_status') == "OFFLINE") {
echo '<div class="offline">Status: OFFLINE</div>';
}
?>
2) 检查数据是否可访问
查看存储在 ACF 选项中的数据。
要在 DOM 中渲染,请使用:
<?php var_dump(get_sub_field('rls_status')); ?>
查看您的 PHP 错误日志(我的偏好是因为它通常更容易查看):
<?php
error_log("--------- START of my log -------------");
error_log(var_export(get_sub_field('rls_status'), true));
error_log(gettype(get_sub_field('rls_status'))); // Check the type is string
error_log("--------- END of my log -------------");
?>
(不要忘记true 作为var_export 函数中的第二个参数)
如果您看不到数据或数据与您的预期不符,则需要检查一些事项。
- 您确定将数据保存在 CMS 中了吗?仔细检查它的存在。经常犯这个错误。我忘记保存页面了。
- 检查您是否可以在选项表的数据库中看到该数据。
- 您在中继器中,因此使用
get_sub_field() 是正确的,但请仔细检查 get_field(),以防您在某个地方感到困惑。
- 通过 error_logging 或在 if 之外渲染 h1 来检查中继器是否正常工作,以查看您循环循环的次数是否与 CMS 中的中继器项相同。或者,请查看下面我的答案中的“检查该帖子的所有 ACF 数据”部分。
3) 检查它是否已经在工作,但似乎没有
通过检查并查看代码块是否呈现但不可见来双重检查 DOM。
为了绝对确定我会做以下事情:
<?php
if (get_sub_field('rls_status') == "ONLINE") {
error_log("--------- WE ARE ONLINE- WHAAAAAT?! -------------");
echo '<div class="online">Status: ONLINE'</div>;
} elseif (get_sub_field('rls_status') == "OFFLINE") {
error_log("--------- WE ARE OFFLINE BOOOOOOO! -------------");
echo '<div class="offline">Status: OFFLINE';</div>
} else {
error_log("--------- NEITHER?! -------------");
error_log(var_export(get_sub_field('rls_status'), true));
}
?>
4) 检查该帖子的所有 ACF 数据
您可以使用get_fields() 函数查看帖子的所有数据。
<?php
error_log("--------- START of my log -------------");
error_log(var_export(get_fields(), true));
error_log("--------- END of my log -------------");
?>
看看你是否能看到你正在寻找的东西或你缺少的东西。