我正在编写一个简单的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类等...),你无法控制何时应用它。
在这种情况下,某种短代码更合适吗?
这需要编辑主题才能显示本地价格,对吗?
答案 0 :(得分:1)
除了不使用匿名函数(可以删除命名函数)之外,我还没有看到您当前方法的问题。您可以使用非常小的样式表,甚至可以使用非样式表,并将样式留给主题。就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()
及其args根据需要对其进行格式化。
答案 1 :(得分:0)
嗯,你总是可以将你自己的css入队,这将指向你用钩子添加的任何内容。
在woocommerce中的钩子可能令人沮丧,试图弄清楚到底发生了什么,但正如你所说,好处是你可以在你需要的地方添加你需要的东西。并且您可以在其中附加具有特定类的元素,您可以使用适当的css和样式进行定位。
关于在应用它时的控制我觉得由woocommerce决定这一点,所以你真的没有选择。不确定你是如何使用短代码的。我的意思是你可以通过add_action
通过挂钩来添加它,但是我不确定你能得到什么,看到你可以通过挂钩到所需的地方来做同样的事情。
至于本地价格的主题编辑,我认为你不需要这样做。 Woocommerce有两个功能get_woocommerce_currency()和get_woocommerce_currency_symbol(),可以帮助您确定用户在其网站上设置的货币。
&#39; hard&#39;部分是配置所有货币兑换,因为它们之间的关系发生了变化。因此,您需要某种跟踪此功能的API,并为您返回关系,以后可以将其应用于您的插件。
这更像是一个长评论,而不是一个真实的回答...