首页 > 解决方案 > 向 Woocommerce 用户我的帐户页面添加高级自定义字段

问题描述

我在后端使用管理列ACF(高级自定义字段) 我在 ACF 中为一些文本创建了一个字段,现在有了管理列,我使这个字段在后端可见,以便我添加一些我想要的文本。

现在我想在前端的我的帐户页面中显示此文本。现在我已经到了这个地步,我将代码片段添加到帐户页面并且有效。

但它只显示我在 ACF 中填写的 DEFAULT 值,而不是我在后台管理自定义列中输入的值。

因此,为了在我的用户后端页面中进一步澄清,我给了用户一串文本。该文本需要显示在用户帐户的前端

所以所有用户都应该有不同的文本字符串。我可以使用管理列添加的文本没问题,但它仅显示(回显,打印)我在 woocommerce 帐户页面中填写的文本不起作用。

同样,我只从 ACF 获得默认结果文本,而不是我输入的文本。

为了获取默认消息,我现在使用的代码是:

<?php echo the_field('ethwallet'); ?>

这现在给了我默认消息。不是我在后端输入的结果。

标签: wordpresswoocommerceadvanced-custom-fields

解决方案


我意识到这是一个较老的问题,但我想提供一个答案,因为它已经被查看了数百次。

要从 User 对象检索自定义元数据(特别是 ACF 字段数据),您需要将当前用户 ID 作为第二个参数传递给get_fieldorthe_field函数。

像这样:

<?php echo get_field( 'ethwallet', 'user_' . get_current_user_id() ); ?>

它的工作方式是 ACF 需要格式化为的第二个参数user_X,其中X是用户的实际 ID(1、347 等)。因此,我们将字符串部分 ('user_') 与登录用户的实际 ID 连接起来,形成传递给the_field()or的完整参数get_field()

PS 这是一个小细节,但在这种情况下echo the_field();是多余的,因为默认情况下会the_field()回显它的值。您可能会省略echoor 做echo get_field();


推荐阅读