我目前正在编写一个与WordPress兼容的WooCommerce插件。我查询WooCommerce订单,目标是使用来自荷兰路由规划器服务的API,使用这些订单的附件规划交付路径。
为我编写PHP已经有一段时间了,我最后写的PHP是7年前,所以我的PHP技能有点生疏。
在查询订单之后,我想调用函数routexl_generate(),这个函数是在我的代码中定义的。但是,运行代码会引发以下错误:
/home/u48469p44993/domains/dev.geusdiervoeding.nl/public_html/wp-content/plugins/geusdiervoeding-wc-rxlplanner/geusdiervoeding-wc-rxlplanner.php:120堆栈跟踪中未定义函数routexl_generate()的调用:#0 /home/u48469p44993/domains/dev.geusdiervoeding.nl/public_html/wp-content/plugins/geusdiervoeding-wc-rxlplanner/geusdiervoeding-wc-rxlplanner.php(100):wc_order_query() #1 /home/u48469p44993/
/dev.geusdiervoeding.nl/public_html/wp-includes/class-wp-hook.php(288):rxlp_menu_init(‘) #2 /home/u48469p44993/domains/dev.geusdiervoeding.nl/public_html/wp-includes/class-wp-hook.php(312):WP_Hook->应用_过滤器(’‘,数组) #3 /home/u48469p44993/domains/dev.geusdiervoeding.nl/public_html/wp-includes/plugin.php(478):WP_Hook->do_action(Array) #4 /home/u48469p44993/domains/dev.geusdiervoeding.nl/public_html/wp-admin/admin.php(254):do_action(‘woocommerce_pag.’) #5 {main}抛入/home/u48469p44993/domains/dev.geusdiervoeding.nl/public_html/wp-content/plugins/geusdiervoeding-wc-rxlplanner/geusdiervoeding-wc-rxlplanner.php在120号线
我不明白它为什么会那样做,因为函数是定义的.我会感谢你的帮助。
这是我代码的一部分:
function wc_order_query()
{
if(isset($_GET['area'])) {
$route = $_GET[ 'area' ];
$date = $_GET[ 'date' ];
$args = array(
'status' => $route,
'meta_key' => 'jckwds_date',
'meta_value' => $date,
);
$orders = wc_get_orders( $args );
if (empty($orders)) {
echo ('<ul><li>Op '.$date.' zijn er geen bezorgorders voor het gekozen routegebied.</li></ul>');
} else {
routexl_generate();
}
//RouteXL API aanroepen
function routexl_generate(){
//Query results to API
}
}
发布于 2020-01-07 10:23:59
我意识到这只是“代码的一部分”,但你所展示的是有问题的:
wc_order_query()
函数不是closed;routexl_generate()
在wc_order_query()
中wc_order_query()
;
routexl_generate()
在if
条件中从技术上讲,嵌套函数没有问题,但是为了清晰起见,将routexl_generate()
完全移出函数是有意义的:
function wc_order_query() {
if (isset($_GET['area'])) {
$route = $_GET[ 'area' ];
$date = $_GET[ 'date' ];
$args = array(
'status' => $route,
'meta_key' => 'jckwds_date',
'meta_value' => $date,
);
$orders = wc_get_orders( $args );
if (empty($orders)) {
echo ('<ul><li>Op '.$date.' zijn er geen bezorgorders voor het gekozen routegebied.</li></ul>');
} else {
routexl_generate();
}
}
}
// RouteXL API aanroepen
function routexl_generate(){
// Query results to API
}
测试和工作。
发布于 2020-01-07 10:18:54
首先你必须声明函数,然后调用你犯了一个错误,你在声明之前调用了一个函数。
//RouteXL API aanroepen
function routexl_generate(){
//Query results to API
}
function wc_order_query() {
if(isset($_GET['area'])){
$route = $_GET[ 'area' ];
$date = $_GET[ 'date' ];
$args = array(
'status' => $route,
'meta_key' => 'jckwds_date',
'meta_value' => $date,
);
$orders = wc_get_orders( $args );
if (empty($orders)) {
echo ('<ul><li>Op '.$date.' zijn er geen bezorgorders voor het gekozen routegebied.</li></ul>');
}else{
routexl_generate();
}
}
}
https://stackoverflow.com/questions/59626217
复制相似问题