函数的作用是:将值放在错误的位置。

所以我试图获取我创建的一个定制字段的值。基本上,我希望通过WordPress中的自定义字段,用动态给定的ID填充模板中的重力表单短码(在循环内)。我正在使用ACF GET_FIELD函数,但我真的不明白出了什么问题。在本例中,重力表单的ID为"%3"。

我的做法是:

echo do_shortcode('[gravityforms id="'.the_field('gf-for-events').'" title="false" description="false" ajax="true"]');

现在我得到的结果是:

3
Oops! We could not locate your form.

获得输出的ID确实是正确的,但由于某种原因,它被输出到错误的位置。为了进一步测试这一点,我尝试了这个:

$test = the_field('gf-for-events');
echo ('[gravityforms id="'.$test.'" title="false" description="false" ajax="true"]');

以下是输出:

3[gravityforms id="" title="false" description="false" ajax="true"]

我知道这与_field函数有关,因为当对ID进行硬编码时,它会以正确的方式输出。

$test = 3;
echo ('[gravityforms id="'.$test.'" title="false" description="false" ajax="true"]');
[gravityforms id="3" title="false" description="false" ajax="true"]

我想知道这里出了什么问题,我有什么遗漏的吗?是否有其他方法可以使用get_field()?


解决方案

the_field()方法会立即输出值。当您改用get_field()时,它将作为返回值返回,因此您可以将其赋给变量。

然后您可以在代码中的任何位置使用该值:

$value = get_field('gf-for-events');
if ( $value ) {
  echo '[gravityforms id="' . $value . '" title="false" description="false" ajax="true"]';
}

这应该会输出(如果返回值确实是3):

[gravityforms id="3" title="false" description="false" ajax="true"]

the_field()get_field()的文档中也分别进行了说明:

_field():显示特定字段的值。

get_field():返回特定字段的值。

相关文章