【问题标题】:How to check for specific ACF sub fields value?如何检查特定的 ACF 子字段值?
【发布时间】:2019-05-22 14:53:43
【问题描述】:

我有一些带有不同子字段的 ACF(高级自定义字段)中继器表。现在我想检查插入其中之一的特定文本值,并根据此处存储的值打印不同的 div 类。

我尝试了以下方法,但这不起作用。

<?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>
}?>

【问题讨论】:

  • 我想你标记了我的答案。如果这解决了您的问题,您能否将其标记为已接受的答案?谢谢:)

标签: php wordpress advanced-custom-fields


【解决方案1】:

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 中渲染,请使用:

&lt;?php var_dump(get_sub_field('rls_status')); ?&gt;

查看您的 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 函数中的第二个参数)

如果您看不到数据或数据与您的预期不符,则需要检查一些事项。

  1. 您确定将数据保存在 CMS 中了吗?仔细检查它的存在。经常犯这个错误。我忘记保存页面了。
  2. 检查您是否可以在选项表的数据库中看到该数据。
  3. 您在中继器中,因此使用 get_sub_field() 是正确的,但请仔细检查 get_field(),以防您在某个地方感到困惑。
  4. 通过 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 -------------");
?>

看看你是否能看到你正在寻找的东西或你缺少的东西。

【讨论】:

    猜你喜欢
    • 2017-01-15
    • 2021-11-23
    • 2020-01-28
    • 1970-01-01
    • 1970-01-01
    • 2018-02-22
    • 1970-01-01
    • 2018-10-02
    • 1970-01-01
    相关资源
    最近更新 更多