在帐户页面上仅显示"已完成"的项目 Woocommerce.



我已经自定义了Woocommerce的"我的帐户"区域,以便在侧边菜单上有一个名为"集合"的自定义页面。

以下简码显示页面上的所有订单

function shortcode_my_orders( $atts ) {
extract( shortcode_atts( array(
'order_count' => -1
), $atts ) );
ob_start();
wc_get_template( 'myaccount/my-orders.php', array(
'current_user'  => get_user_by( 'id', get_current_user_id() ),
'order_count'   => $order_count
) );
return ob_get_clean();
}
add_shortcode('my_orders', 'shortcode_my_orders');

然后,我添加了此过滤器以仅显示已完成的订单:

add_filter( 'woocommerce_my_account_my_orders_query', 'custom_my_orders_query' );
function custom_my_orders_query($args){
$args['post_status'] = array('wc-completed');
return $args;
}

但这不仅在"收集"页面上显示已完成的订单,而且还在一般订单页面上显示已完成的订单。所以我尝试添加一个 if 语句,以便集合将显示已完成的订单,但订单页面将显示所有内容,但这不起作用 - 只是似乎忽略并再次显示所有订单:

add_filter( 'woocommerce_my_account_my_orders_query', 'custom_my_orders_query' );
function custom_my_orders_query($args){
if ( is_page('collection') ) $args['post_status'] = array('wc-completed');
return $args;
}

该页面称为集合,但它不起作用 - 帮助!

谢谢 杰森

使用这个:

$args = array(
'post_type'   => 'shop_order',
'post_status' => 'wc-completed', 
'numberposts' => -1,
// for current user id
'meta_key'    => '_customer_user',
'meta_value'  => $user_id,
);
// Get all customer orders
$customer_orders = get_posts( $args );

最新更新