我正在为我的WooCommerce网站开发一个自定义送货插件。
当且仅当用户的货币为美元时,我才想将送货方式更改为我的自定义方式。除了美元,我使用LKR作为我的其他货币单位。如果货币是LKR,则应采用不同的运输方式。
所以我尝试通过在plugin.php文件中使用此代码来检查用户当前的基本货币是否为美元,
我的plugin.php代码包含 - > wp-content/plugins/my-plugin
if ( 'USD' !== get_woocommerce_currency() ) {
echo 'Hello ';
//my action
}
所以现在每次运行这段代码我都会收到一个致命的错误
Call to undefined function get_woocommerce_currency()
然后我尝试包含option.php,
include_once('wp-includes/option.php');
仍然收到相同的错误消息。
如何修复它以及为什么我会收到该错误?
我想做的只是检查用户的当前货币并激活插件,如果货币仅为美元。
感谢。
答案 0 :(得分:1)
您的问题的解决方案取决于您如何/何时调用您拥有的代码行。
一个是如果你在woocommerce_init
上添加了一个钩子,这不会成为一个问题。
一个非常简单的例子来说明我的意思。
add_action( 'woocommerce_init', 'wc_init' );
function wc_init(){
// get_woocommerce_currency() will not throw error here.
}
如果您正在制作一个与WooCommerce一起使用的插件,我建议您在woocommerce_init
的函数挂钩中运行插件init。
我不确定你要做什么。但如果您只对货币感兴趣,也可以这样做:
$currency = apply_filters( 'woocommerce_currency', get_option( 'woocommerce_currency' ) );
if ( 'USD' !== $currency ) {
echo 'Hello ';
//my action
}
再次,与WooCommerce一起工作时,您应该使用'woocommerce_init'
来挂钩您的功能。
更新3
function add_chalitha_shipping_method( $methods ) {
if ( 'USD' == get_woocommerce_currency() ) {
$methods[] = 'test_Shipping_Method';
}
return $methods;
}
答案 1 :(得分:0)
在调用get_woocommerce_currency()
函数之前,您应该检查函数是否存在。 get_woocommerce_currency()
文件中存在wc-core-functions.php
。
if ( !function_exists( 'get_woocommerce_currency' ) ) {
require_once '/includes/wc-core-functions.php';
}
$currency_code = get_woocommerce_currency();
if ( 'USD' !== $currency_code ) {
echo 'Hello ';
//my action
}
get_woocommerce_currency()
是WooCommerce的功能。您将在wp-content\plugins\woocommerce\includes
目录中找到它。