使用自定义元键和元值扩展 wc_get_orders()

dav*_*sor 5 php wordpress orders woocommerce

我正在尝试使用元键“order_referrer_id”获取所有商店订单,该值将是用户 ID,例如“1060”。

这是我到目前为止所尝试过的:

$args = array(
        'limit' => -1,
        'status' => 'completed',
        'meta_query' => array(
            array(
                'key' => 'order_referrer_id',
                'value' => 1060,
                'compare' => '='
            ),
        ),
        'return' => 'ids',
    ); 

$orders = wc_get_orders( $args );
Run Code Online (Sandbox Code Playgroud)

由于某种原因,查询忽略元查询并返回所有订单。

筛选店铺订单的正确方法是什么?

7uc*_*f3r 11

wc_get_ordersWC_Order_Query提供一种标准的订单检索方法,该方法可以安全使用,并且不会因未来 WooCommerce 版本中的数据库更改而中断。

\n

来源:wc_get_orders 和 WC_Order_Query

\n
\n

您可以使用meta_key,meta_valuemeta_compare,这样您就得到:

\n
$args = array(\n    \'status\'        => \'completed\', // Accepts a string: one of \'pending\', \'processing\', \'on-hold\', \'completed\', \'refunded, \'failed\', \'cancelled\', or a custom order status.\n    \'meta_key\'      => \'order_referrer_id\', // Postmeta key field\n    \'meta_value\'    => 1060, // Postmeta value field\n    \'meta_compare\'  => \'=\', // Possible values are \xe2\x80\x98=\xe2\x80\x99, \xe2\x80\x98!=\xe2\x80\x99, \xe2\x80\x98>\xe2\x80\x99, \xe2\x80\x98>=\xe2\x80\x99, \xe2\x80\x98<\xe2\x80\x98, \xe2\x80\x98<=\xe2\x80\x99, \xe2\x80\x98LIKE\xe2\x80\x99, \xe2\x80\x98NOT LIKE\xe2\x80\x99, \xe2\x80\x98IN\xe2\x80\x99, \xe2\x80\x98NOT IN\xe2\x80\x99, \xe2\x80\x98BETWEEN\xe2\x80\x99, \xe2\x80\x98NOT BETWEEN\xe2\x80\x99, \xe2\x80\x98EXISTS\xe2\x80\x99 (only in WP >= 3.5), and \xe2\x80\x98NOT EXISTS\xe2\x80\x99 (also only in WP >= 3.5). Values \xe2\x80\x98REGEXP\xe2\x80\x99, \xe2\x80\x98NOT REGEXP\xe2\x80\x99 and \xe2\x80\x98RLIKE\xe2\x80\x99 were added in WordPress 3.7. Default value is \xe2\x80\x98=\xe2\x80\x99.\n    \'return\'        => \'ids\' // Accepts a string: \'ids\' or \'objects\'. Default: \'objects\'.\n);\n\n$orders = wc_get_orders( $args );\n\n// NOT empty\nif ( ! empty ( $orders ) ) {  \n    foreach ( $orders as $order ) {\n        echo \'<p>ID = \' . $order . \'</p>\';\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n