我正在WooCommerce之外构建一个自定义产品循环,我在ACF中设置了一个中继器循环,他们可以在其中选择要显示的产品,并返回产品的对象;然而,这似乎与使用WC函数get_product
返回的对象不太匹配,如中所示,返回的价格详细信息如下:
[_regular_price] => 14.99
[_sale_price] =>
[_price] => 14.99
这些字段与许多其他字段一样不可访问,因为它们以下划线开头。
上述数据来自一个循环,例如:
{% for product in post.get_field('showcase_products') %}
...
{% endfor %}
我也试过在Twig中做product.get_price
,但它不起作用。
然后我可以尝试做以下操作:
{% set price = fn('wc_get_product', product.id) %}
然后我可以使用以下任何一种:
{{ fn('print_r', price.price) }}
{{ fn('print_r', price.get_price) }}
{{ fn('print_r', price.get_price_html) }}
有没有一种方法可以在每个循环中不额外调用WC函数wc_get_product
的情况下获得上述数据?
然而,这似乎与使用WC函数get_product 返回的对象不太匹配
这是因为ACF中继器字段被设置为返回阵列中的WP_Post数据;产品";帖子类型。ACF不会为您将中继器阵列中的每个支柱转换为Wooccommerce产品,因此您必须在每个环路上手动进行转换,因为您有{% set price = fn('wc_get_product', product.id) %}
甚至Timber在他们的文档中也使用了wc_get_product
函数https://timber.github.io/docs/guides/woocommerce/
我不认为用该函数转换数组中的每个post有什么特别错误或资源繁重的地方。