如何在 wordpress 中修复对未定义函数 get_woocommerce_currency() 的调用?
How to fix Call to undefined function get_woocommerce_currency() in wordpress?
我正在为我的 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');
仍然收到相同的错误消息。
如何修复它以及为什么我会收到该错误?
我想做的只是检查用户当前的货币,如果货币只有美元,则激活插件。
谢谢。
您的问题的修复将取决于how/when您调用的那些代码行。
一个是如果你在 woocommerce_init
上添加了一个钩子,这将不是问题。
一个非常非常简单的例子来说明我的意思。
add_action( 'woocommerce_init', 'wc_init' );
function wc_init(){
// get_woocommerce_currency() will not throw error here.
}
如果你正在制作一个应该与 WooCommerce 一起工作的插件,我建议你 运行 你的插件在函数挂钩中初始化到 woocommerce_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;
}
在调用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
目录中找到它。
我正在为我的 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');
仍然收到相同的错误消息。
如何修复它以及为什么我会收到该错误?
我想做的只是检查用户当前的货币,如果货币只有美元,则激活插件。
谢谢。
您的问题的修复将取决于how/when您调用的那些代码行。
一个是如果你在 woocommerce_init
上添加了一个钩子,这将不是问题。
一个非常非常简单的例子来说明我的意思。
add_action( 'woocommerce_init', 'wc_init' );
function wc_init(){
// get_woocommerce_currency() will not throw error here.
}
如果你正在制作一个应该与 WooCommerce 一起工作的插件,我建议你 运行 你的插件在函数挂钩中初始化到 woocommerce_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;
}
在调用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
目录中找到它。