From 02e3c6362d9f9bc674602fe470168efd23ef4b9a Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Tue, 19 Jan 2016 19:02:26 -0200 Subject: [PATCH] Created my account > orders template --- includes/class-wc-query.php | 6 +- .../class-wc-shortcode-my-account.php | 6 +- includes/wc-account-functions.php | 47 +++++++ includes/wc-template-functions.php | 28 +++- includes/wc-template-hooks.php | 2 + templates/myaccount/orders.php | 124 ++++++++++++++++++ 6 files changed, 205 insertions(+), 8 deletions(-) create mode 100644 templates/myaccount/orders.php diff --git a/includes/class-wc-query.php b/includes/class-wc-query.php index 760ecf8006a..54d8abcbd32 100644 --- a/includes/class-wc-query.php +++ b/includes/class-wc-query.php @@ -94,7 +94,11 @@ class WC_Query { $title = __( 'Order Received', 'woocommerce' ); break; case 'orders' : - $title = __( 'Orders', 'woocommerce' ); + if ( isset( $_GET['orders-page'] ) ) { + $title = sprintf( __( 'Orders (page %d)', 'woocommerce' ), intval( $_GET['orders-page'] ) ); + } else { + $title = __( 'Orders', 'woocommerce' ); + } break; case 'view-order' : $order = wc_get_order( $wp->query_vars['view-order'] ); diff --git a/includes/shortcodes/class-wc-shortcode-my-account.php b/includes/shortcodes/class-wc-shortcode-my-account.php index e9d84acb183..2a3d4475d7c 100644 --- a/includes/shortcodes/class-wc-shortcode-my-account.php +++ b/includes/shortcodes/class-wc-shortcode-my-account.php @@ -71,12 +71,12 @@ class WC_Shortcode_My_Account { */ private static function my_account( $atts ) { extract( shortcode_atts( array( - 'order_count' => 15 + 'order_count' => 15 // @deprecated 2.6.0. Keep for backward compatibility. ), $atts ) ); wc_get_template( 'myaccount/my-account.php', array( - 'current_user' => get_user_by( 'id', get_current_user_id() ), - 'order_count' => 'all' == $order_count ? -1 : $order_count + 'current_user' => get_user_by( 'id', get_current_user_id() ), + 'order_count' => 'all' == $order_count ? -1 : $order_count ) ); } diff --git a/includes/wc-account-functions.php b/includes/wc-account-functions.php index 56782f7598a..3bce7d1e21f 100644 --- a/includes/wc-account-functions.php +++ b/includes/wc-account-functions.php @@ -84,3 +84,50 @@ function wc_get_account_menu_items() { 'customer-logout' => __( 'Logout', 'woocommerce' ), ) ); } + +/** + * Get My Account > Orders coluns. + * + * @since 2.6.0 + * @return array + */ +function wc_get_account_orders_columns() { + $columns = apply_filters( 'woocommerce_account_orders_columns', array( + 'order-number' => __( 'Order', 'woocommerce' ), + 'order-date' => __( 'Date', 'woocommerce' ), + 'order-status' => __( 'Status', 'woocommerce' ), + 'order-total' => __( 'Total', 'woocommerce' ), + 'order-actions' => ' ', + ) ); + + // Deprecated filter since 2.6.0. + return apply_filters( 'woocommerce_my_account_my_orders_columns', $columns ); +} + +/** + * Get My Account > Orders query args. + * + * @return array + */ +function wc_get_account_orders_query_args() { + $args = array( + 'numberposts' => 15, + 'meta_key' => '_customer_user', + 'meta_value' => get_current_user_id(), + 'post_type' => wc_get_order_types( 'view-orders' ), + 'post_status' => array_keys( wc_get_order_statuses() ) + ); + + // @deprecated 2.6.0. + $args = apply_filters( 'woocommerce_my_account_my_orders_query', $args ); + + // Remove deprecated option. + $args['posts_per_page'] = $args['numberposts']; + unset( $args['numberposts'] ); + + if ( isset( $_GET['orders-page'] ) && 1 < $_GET['orders-page'] ) { + $args['paged'] = absint( $_GET['orders-page'] ); + } + + return apply_filters( 'woocommerce_account_orders_query', $args ); +} diff --git a/includes/wc-template-functions.php b/includes/wc-template-functions.php index 3830e6d33c4..bc797208be6 100644 --- a/includes/wc-template-functions.php +++ b/includes/wc-template-functions.php @@ -2025,10 +2025,20 @@ if ( ! function_exists( 'wc_dropdown_variation_attribute_options' ) ) { } } +if ( ! function_exists( 'woocommerce_account_orders' ) ) { + + /** + * My Account > Orders template. + */ + function woocommerce_account_orders() { + wc_get_template( 'myaccount/orders.php' ); + } +} + if ( ! function_exists( 'woocommerce_account_view_order' ) ) { /** - * My Account view order template. + * My Account > View order template. * * @param int $order_id Order ID. */ @@ -2037,10 +2047,20 @@ if ( ! function_exists( 'woocommerce_account_view_order' ) ) { } } +if ( ! function_exists( 'woocommerce_account_downloads' ) ) { + + /** + * My Account > Downloads template. + */ + function woocommerce_account_downloads() { + wc_get_template( 'myaccount/downloads.php' ); + } +} + if ( ! function_exists( 'woocommerce_account_edit_account' ) ) { /** - * My Account edit account template. + * My Account > Edit account template. */ function woocommerce_account_edit_account() { WC_Shortcode_My_Account::edit_account(); @@ -2050,7 +2070,7 @@ if ( ! function_exists( 'woocommerce_account_edit_account' ) ) { if ( ! function_exists( 'woocommerce_account_edit_address' ) ) { /** - * My Account edit address template. + * My Account > Edit address template. * * @param string $type Address type. */ @@ -2065,7 +2085,7 @@ if ( ! function_exists( 'woocommerce_account_edit_address' ) ) { if ( ! function_exists( 'woocommerce_account_add_payment_method' ) ) { /** - * My Account add payment method template. + * My Account > Add payment method template. */ function woocommerce_account_add_payment_method() { WC_Shortcode_My_Account::add_payment_method(); diff --git a/includes/wc-template-hooks.php b/includes/wc-template-hooks.php index 876c50bc039..779d410b311 100644 --- a/includes/wc-template-hooks.php +++ b/includes/wc-template-hooks.php @@ -243,7 +243,9 @@ add_filter( 'jetpack_comment_form_enabled_for_product', '__return_false' ); /** * My Account. */ +add_action( 'woocommerce_my_account_orders_endpoint', 'woocommerce_account_orders' ); add_action( 'woocommerce_my_account_view_order_endpoint', 'woocommerce_account_view_order' ); +add_action( 'woocommerce_my_account_downloads_endpoint', 'woocommerce_account_downloads' ); add_action( 'woocommerce_my_account_edit_account_endpoint', 'woocommerce_account_edit_account' ); add_action( 'woocommerce_my_account_edit_address_endpoint', 'woocommerce_account_edit_address' ); add_action( 'woocommerce_my_account_add_payment_method_endpoint', 'woocommerce_account_add_payment_method' ); diff --git a/templates/myaccount/orders.php b/templates/myaccount/orders.php new file mode 100644 index 00000000000..ca3ad83ebaf --- /dev/null +++ b/templates/myaccount/orders.php @@ -0,0 +1,124 @@ + + +
+ have_posts() ) : ?> + + + + $column_name ) : ?> + + + + + + + posts as $customer_order ) : + $order = wc_get_order( $customer_order ); + $item_count = $order->get_item_count(); + ?> + + $column_name ) : ?> + + + + + + + + max_num_pages ) : ?> + + + + +
+ + + + +
+ +