我正在尝试在my-orders.php中添加一个搜索表单,用户可以通过输入订单ID来搜索订单表。
目前,我正在使用get_posts检索所有订单:
$customer_orders = get_posts( apply_filters( 'woocommerce_my_account_my_orders_query', array(
'numberposts' => $order_count,
'meta_key' => '_customer_user',
'meta_value' => get_current_user_id(),
'post_type' => wc_get_order_types( 'view-orders' ),
'post_status' => 'wc-quotes') ) );
我有什么方法可以按订单ID检索订单(在搜索栏中输入值)?
我还是WooCommerce的新手,所以如果我的解释令人困惑,请原谅我。
答案 0 :(得分:0)
使用wc_get_order
功能并传递您的orderid
参数
// Get an instance of the WC_Order object
$order = wc_get_order( $order_id );
$order_data = $order->get_data(); // The Order data
现在您可以使用$order_data
echo '<pre>'; print_r($order_data);
参考
https://docs.woocommerce.com/wc-apidocs/function-wc_get_order.html https://docs.woocommerce.com/document/composite-products/composite-products-functions-reference/
答案 1 :(得分:0)
您需要先在页面中添加自定义表单,因为普通搜索栏不适用于此页面。
以下是使用post方法的自定义表单:
echo'<form method="post" action="">
<label>Search an Order ID</label><br>
<input type="text" name="orderid" value="">
<input type="submit" name="submit_trusted_list" value="Submit"/>
</form>';
然后,由于查询订单的代码中包含了钩子过滤器 woocommerce_my_account_my_orders_query
,您将使用自定义钩子函数,其中参数'post__in'将使用给定订单ID:
add_filter( 'woocommerce_my_account_my_orders_query', 'search_orders_by_id', 20, 1 );
function search_orders_by_id( $args ){
if( isset($_POST['orderid']) && is_numeric ($_POST['orderid']) ){
$args['post__in'] = array(intval($_POST['orderid']));
}
return $args;
}
代码进入活动子主题(或活动主题)的function.php文件。
经过测试和工作。
因此,您只会获得所请求订单的过滤列表。