在WooCommerce之外,使用Timber、Twig和ACF获取WooCommCommerce产品的产品价格



我正在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有什么特别错误或资源繁重的地方。

最新更新