Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何修复wordpress中对未定义函数get\u\u currency()的调用?_Php_Wordpress_Woocommerce_Fatal Error - Fatal编程技术网

Php 如何修复wordpress中对未定义函数get\u\u currency()的调用?

Php 如何修复wordpress中对未定义函数get\u\u currency()的调用?,php,wordpress,woocommerce,fatal-error,Php,Wordpress,Woocommerce,Fatal Error,我正在为我的WooCommerce网站开发一个定制的配送插件 当且仅当用户的货币为美元时,我想将发货方式更改为自定义方式。除了美元之外,我还使用LKR作为我的其他货币单位。如果货币为LKR,则应采用不同的装运方法 因此,我尝试在plugin.php文件中使用此代码检查用户当前的基础货币是否为美元 My plugin.php代码包含在->wp content/plugins/My plugin if ( 'USD' !== get_woocommerce_currency() ) { e

我正在为我的WooCommerce网站开发一个定制的配送插件

当且仅当用户的货币为美元时,我想将发货方式更改为自定义方式。除了美元之外,我还使用LKR作为我的其他货币单位。如果货币为LKR,则应采用不同的装运方法

因此,我尝试在plugin.php文件中使用此代码检查用户当前的基础货币是否为美元

My 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');
仍然收到相同的错误消息

如何修复它以及为什么我会出现这个错误

我想做的只是检查用户的当前货币,并激活插件,如果货币只是美元


谢谢

问题的修复将取决于您调用这些代码行的方式/时间

一个是,如果您在
woocommerce\u init
上添加了一个钩子,这不会是一个问题

一个非常简单的例子来说明我的意思

add_action( 'woocommerce_init', 'wc_init' );
function wc_init(){
    // get_woocommerce_currency() will not throw error here.
}
如果您正在制作一个应该与WooCommerce一起使用的插件,我建议您在
WooCommerce\u init
的函数挂钩中运行plugin init


我不太确定你在干什么。但如果你只是对货币感兴趣,不妨这样做:

$currency = apply_filters( 'woocommerce_currency', get_option( 'woocommerce_currency' ) );
if ( 'USD' !== $currency ) {
    echo 'Hello  ';
    //my action
}
同样,与WooCommerce一起工作时,您应该使用
'WooCommerce\u init'
来钩住您的函数


更新3

function add_chalitha_shipping_method( $methods ) {
    if ( 'USD' == get_woocommerce_currency() ) {
         $methods[] = 'test_Shipping_Method';
    }
    return $methods;
}

调用
get\u woocommerce\u currency()
函数之前,应检查该函数是否存在。
get\u woocommerce\u 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
}    

获取woocommerce\u currency()
是woocommerce的函数。您可以在
wp content\plugins\woocommerce\includes
目录中找到它。

未定义的函数表示该函数不存在,请进入wp includes/options.php,按ctrl-F搜索函数并键入函数名。请查看这些钩子列表Hi@Reigel,即使你的代码在我使用它时完成了这个技巧,我的结帐部分仍然保持加载状态,它是否覆盖了其他woocommerce功能?你应该用你所做的更新上面的原始帖子。因为我上面的代码不会做任何事情,不管你在里面放什么,都是另一个故事。所以我不知道问题出在哪里。将函数挂接到
woocommerce\u init
只会确保woocommerce准备就绪。所以WooCommerce的所有功能都将存在。我已经添加了我的完整代码。我想做的是,只有当货币是美元时,才激活此发货方法。除了检查货币之外,还有其他方法吗?我没有彻底检查你的代码,因为它很长。但是
add\u chalitha\u shipping\u方法
添加了shipping方法。您应该将
if
放在那里。require_once'/woocommerce/includes/wc core functions.php';这是正确的路径吗?添加为require_once'../woocommerce/includes/wc core functions.php';到目前为止,我已经添加了完整的代码,但没有货币检查部分,