在WooCommerce中创建自定义订单表 - 花费时间来循环执行订单

时间:2017-08-04 14:10:09

标签: php wordpress foreach woocommerce orders

我正在创建我的WooCommerce网站的一部分,我的公司客户可以登录并查看他们的哪些员工已下订单。

为了做到这一点,我计划使用 WP_List_Table ,这将由一些数据填充。

但是,我正在努力创建我的数据数组,因为我们的posts表和我们的订单库(c.10000订单)的大小,在循环中运行需要很长时间。

以下是我创建基本电子邮件地址数组的代码 - 但Wordpress在30秒后抛出致命错误。

有没有人知道如何才能以更好的方式做到这一点?非常感谢。

// Set the parameters for a orders

$customer_orders = get_posts( array(
    'numberposts' => -1,
    'post_type'   => 'shop_order',
    'post_status' => array_keys( wc_get_order_statuses() ),
) );


// Pull a list of order IDs

$orderids = [];
foreach ($customer_orders as $customer_order) {
    $orderids[] = $customer_order->ID;
}

// Create a list of orders
$orders = [];
foreach ($orderids as $orderid) {
    $order = wc_get_order($orderid);
    $order_company = $order->get_billing_company();

    if($order_company = 'Corporate Client Name') {
         $orders[] = $order->get_billing_email();
    }
}

print_r($orders);

1 个答案:

答案 0 :(得分:1)

您应该更好地使用自定义SQL查询,直接过滤“公司客户名称”结算公司名称。这将避免通过您的5000订单。这是代码:

{{1}}

此代码经过测试并正常运行