wordpress - 向 Woocommerce 用户我的帐户页面添加高级自定义字段
问题描述
我在后端使用管理列和ACF(高级自定义字段) 我在 ACF 中为一些文本创建了一个字段,现在有了管理列,我使这个字段在后端可见,以便我添加一些我想要的文本。
现在我想在前端的我的帐户页面中显示此文本。现在我已经到了这个地步,我将代码片段添加到帐户页面并且有效。
但它只显示我在 ACF 中填写的 DEFAULT 值,而不是我在后台管理自定义列中输入的值。
因此,为了在我的用户后端页面中进一步澄清,我给了用户一串文本。该文本需要显示在用户帐户的前端
所以所有用户都应该有不同的文本字符串。我可以使用管理列添加的文本没问题,但它仅显示(回显,打印)我在 woocommerce 帐户页面中填写的文本不起作用。
同样,我只从 ACF 获得默认结果文本,而不是我输入的文本。
为了获取默认消息,我现在使用的代码是:
<?php echo the_field('ethwallet'); ?>
这现在给了我默认消息。不是我在后端输入的结果。
解决方案
我意识到这是一个较老的问题,但我想提供一个答案,因为它已经被查看了数百次。
要从 User 对象检索自定义元数据(特别是 ACF 字段数据),您需要将当前用户 ID 作为第二个参数传递给get_field
orthe_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()
回显它的值。您可能会省略echo
or 做echo get_field();
推荐阅读
- flutter - Flutter:移动 webapp 响应式 UI 在移动浏览器应用程序上渲染良好,但在应用内 webview 上却不行
- opc-ua - 当 OPC UA 服务器重新启动时,客户端自动重新订阅的最佳位置是什么
- javascript - 嵌入式 Edge 下的 jQuery Ajax 404(Office 任务窗格)
- c++ - 如何使用 CMake 在 macOS 上链接 fftw3?
- python - 即使安装成功,Raspberry Pi 也找不到 Tesseract
- python - 我试图在 odoo 中安装一个新模块但发生错误,AttributeError: 'str' object has no attribute 'setdefault'
- google-cloud-platform - FlexRs=SPEED_OPTIMIZED 在 Dataflow 中的作用是什么?
- apache-spark - 在 Pyspark 中管理多个数据框
- docker - Docker更改命名卷的位置
- reactjs - 如何在 ant design 崩溃中更改图标(Accordian)