【问题标题】:Display only “completed” items on account page Woocommerce在帐户页面 Woocommerce 上仅显示“已完成”的项目
【发布时间】:2017-07-13 09:05:41
【问题描述】:

我已经自定义了 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;
}

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

谢谢, 杰森

【问题讨论】:

    标签: php wordpress function woocommerce


    【解决方案1】:

    使用这个:

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

    【讨论】:

    • 谢谢你 - 这个去哪儿了?我要保留过滤器吗?
    • 过滤器可能不需要
    • 我已经删除了过滤器,所以它只是你给我的短代码和数组,它已经回到显示所有订单。
    • 感谢您抽出宝贵时间 - 您还有其他建议吗?
    猜你喜欢
    • 1970-01-01
    • 2013-12-13
    • 1970-01-01
    • 2020-05-11
    • 2013-07-05
    • 1970-01-01
    • 1970-01-01
    • 2021-06-19
    • 2016-10-16
    相关资源
    最近更新 更多