我试图根据订单ID、状态和产品名称过滤客户的前端订单。
我已经添加了一个搜索框的形式,添加了查询变量过滤器,如下所示。
//Add my account order search keyword query var
function efst_query_vars( $qvars ) {
$qvars[] = 'keyword';
return $qvars;
}
add_filter( 'query_vars', 'efst_query_vars' );
// define the woocommerce_my_account_my_orders_query callback
function efst_filter_woocommerce_my_account_my_orders_query( $array ) {
$keyword = get_query_var('keyword');
$array['post_parent'] = $keyword;
$array['post_status'] = $keyword;
return $array;
};
// add the filter
add_filter( 'woocommerce_my_account_my_orders_query', 'efst_filter_woocommerce_my_account_my_orders_query', 10, 1 );
如果我只使用“post_status”查询过滤器,并在搜索框中键入“处理中”等状态,它就可以工作。如果我使用“处理”或“拒绝”,它就不工作。如果我同时使用这两个搜索过滤器,搜索结果为空。这意味着,即使是post状态过滤器也不一致,其他过滤器根本不工作。
1条答案
按热度按时间rfbsl7qr1#
在深入研究WP查询类之后,我终于找到了解决方案。WP使用参数“p”在posts表中搜索ID。
工作代码如下: