如何检查特定的ACF子字段值?

时间:2018-12-22 14:37:36

标签: php wordpress advanced-custom-fields

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

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

[ { _id: '09-09-2019', count: 3 },
  { _id: '08-09-2019', count: 3 },
  { _id: '07-09-2019', count: 2 },
  { _id: '05-09-2019', count: 8 },
  { _id: '06-09-2019', count: 1 },
  { _id: '10-09-2019', count: 1 },
  { _id: '04-09-2019', count: 4 } ]

1 个答案:

答案 0 :(得分: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中呈现,请使用:

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

如果看不到数据或不是您期望的数据,则需要检查一些内容。

  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 -------------");
?>

查看您是否可以找到所需的内容或丢失的内容。