You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用wc_get_orders()报错:未定义函数问题求助

解决Woocommerce中wc_get_orders()未定义错误

问题描述

调用Woocommerce的wc_get_orders()函数时触发错误:Uncaught Error: Call to undefined function wc_get_orders(),核心代码逻辑如下:

if(isset($_GET['inicio']) ){
    $initial_date = $_GET['inicio'];
    $final_date = $_GET['fin'];
    $orders = wc_get_orders(array(
        'limit'=>-1,
        //'type'=> 'shop_order',
        'orderby' => 'date',
        'order' => 'DESC',
        'status'=> array( 'wc-processing' ),
        'date_created'=> $initial_date .'...'. $final_date, 
        'return' => 'ids',
    ));/**/
    $fechas="de ".$initial_date." a ".$final_date;
}else{
    $orders = wc_get_orders(array(
        'limit' => 10,
        'orderby' => 'date',
        'order' => 'DESC',
        'status'=> array( 'wc-processing' ),
        'return' => 'ids',
    ));   
    $fechas="(ultimos 10)";
} 

完整代码文件位于/wp-admin/目录下。

问题原因

  1. WordPress与WooCommerce核心未加载:直接访问/wp-admin/下的自定义PHP文件时,未触发WordPress初始化流程,WooCommerce的函数库未被自动包含,导致wc_get_orders()等函数无法识别。
  2. 冗余的手动数据库连接:代码中手动连接数据库的操作完全多余,global $wpdb已可直接调用WordPress的数据库连接,手动连接绕开了WordPress机制,也无法解决核心函数未加载的问题。

解决办法

1. 强制加载WordPress核心文件

在代码最顶部添加以下代码,确保WordPress和WooCommerce的所有核心函数被加载:

<?php
// 加载WordPress核心,路径适配/wp-admin/目录下的文件
require_once(__DIR__ . '/../wp-load.php');

2. 移除手动数据库连接代码

删除以下冗余代码,直接使用global $wpdb操作数据库:

global $wpdb;
$host_name = $wpdb->dbhost;
$database = $wpdb->dbname;
$user_name = $wpdb->dbuser;
$password = $wpdb->dbpassword;
/*conectar bdd WP*/$link = mysqli_connect($host_name, $user_name, $password, $database);
if ($link->connect_error) {die("Connection failed: ". $link->connect_error);}else{/* echo "Connected successfully";/**/}
/*character set to utf8mb4 */$link->set_charset("utf8mb4");

原代码中的自定义SQL查询,改用$wpdb的安全方法执行(避免SQL注入):

$cp = $order2["shipping"]["postcode"];
// 使用prepare方法安全查询
$row = $wpdb->get_row($wpdb->prepare("SELECT * FROM 0_cp_jo WHERE cp = %s LIMIT 1", $cp));
if ($row) {
    $barrio = $row->barrio;
} else {
    $barrio = $cp . " c.p. no encontrado";
}

3. 确认WooCommerce已激活

登录WordPress后台,检查WooCommerce插件是否处于激活状态,只有激活后其函数库才会被WordPress加载。

内容的提问来源于stack exchange,提问作者Pablo Ndure

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 17:15:43