添加有关产品价格的一些信息的正确方法

Proper way of adding some information about product price

我正在编写一个简单的 WooComerce 插件。这是我第一次使用 WordPress,所以我的问题可能很菜鸟。

插件应该只提供一些关于产品价格的附加信息,这是以当地货币表示的近似价格(基于访问者位置)。

伪代码:

add_action(
    'woocommerce_get_price_html', 
    function append_local_price($content, $product) {
        return $content . ' <span class="amount-local-price">Approx. (RSD 3,804)</span>';
    }, 
    10, 
    2
);

撇开虚拟实现、格式和其他问题不谈,因为这不是我在这个问题上的重点,在这种情况下连接到 WooCommerce 工作流程的正确方法是什么?

因为我认为这种方法的优点是您只需安装插件即可运行,零配置。但缺点是 html 渲染不容易配置(css class 等...)并且您无法控制何时应用它。

在这种情况下,某种短代码是否更合适?

这需要编辑主题才能显示本地价格,对吗?

好吧,您始终可以将自己的 css 加入队列,它会指向您使用挂钩添加的任何内容。

woocommerce 中的挂钩可能会令人沮丧,因为它试图弄清楚发生了什么,但正如您所说,好处是您可以在需要的地方添加所需的内容。您可以在其中附加带有特定 class 的元素,您可以使用 css 定位并适当设置样式。

关于在应用时控制它,我认为这取决于 woocommerce 来决定,所以你真的没有选择。不确定您将如何使用简码。我的意思是你可以通过 add_action 通过挂钩某个地方来添加它,但我不确定你会得到什么,看到你可以通过挂钩到所需的地方来做同样的事情。

至于本地价格的主题编辑,我认为您不需要这样做。 Woocommerce 有两个函数 get_woocommerce_currency() and get_woocommerce_currency_symbol() 可以帮助您确定用户在其网站上设置的货币。

'hard'部分是配置所有货币兑换,因为它们之间的关系发生了变化。所以你需要某种 API 来跟踪这个和 returns 你的关系,你可以稍后将其应用于你的插件。

这更像是一个长评论而不是真正的答案……

除了不使用匿名函数(可以删除命名函数)之外,我认为您当前的方法没有问题。您可以使用非常小的样式表,甚至根本不使用样式表,而将样式留给主题。至于 html 内容,您可以通过过滤器 运行 自己的内容,以便人们可以根据需要进行修改。不要忘记让您的字符串准备好翻译。

add_filter( 'woocommerce_get_price_html', 'so_31702808_local_price' );
function so_31702808_local_price( $content, $product) {
        $local_price = "RSD 3,804"; // retrieved from your API
        $local_price_html = apply_filters( 'so_31702808_local_price_html', ' <span class="amount-local-price">'. $sprintf( __e( 'Approx. (%s)', 'your-text-domain'), $local_price ) .'</span>', $local_price, $product );
        return $content . $local_price_html;
    }, 

);

如果本地价格没有在本地格式化,那么您可以使用 wc_price() 及其参数根据需要对其进行格式化。