Php 仅显示“;已完成”;帐户页上的项目

Php 仅显示“;已完成”;帐户页上的项目,php,wordpress,function,woocommerce,Php,Wordpress,Function,Woocommerce,我已经定制了Woocommerce的“我的账户”区域,在侧菜单上有一个名为“收藏”的定制页面 以下短代码显示页面上的所有订单 function shortcode_my_orders( $atts ) { extract( shortcode_atts( array( 'order_count' => -1 ), $atts ) ); ob_start(); wc_get_template(

我已经定制了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;
}
该页面名为collection,但不起作用-帮助

谢谢,, Jason使用以下方法:

$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 );

谢谢你,这是怎么回事?我是否保留了过滤器?过滤器可能不需要。我已删除了过滤器,因此它只是您刺激我的短码和数组,它已返回显示所有订单。感谢您抽出时间-您有任何进一步的建议吗?