diff --git a/admin/admin-dashboard.php b/admin/admin-dashboard.php
index ae39e24e8e3..8f3cf5c0073 100644
--- a/admin/admin-dashboard.php
+++ b/admin/admin-dashboard.php
@@ -217,7 +217,7 @@ function woocommmerce_dashboard_recent_reviews() {
$rating = get_comment_meta( $comment->comment_ID, 'rating', true );
echo '
- '.$rating.' '.__('out of 5', 'woothemes').'
';
+ '.$rating.' '.__('out of 5', 'woothemes').'';
echo '';
echo ''.strip_tags($comment->comment_excerpt).' [...]
';
diff --git a/admin/admin-init.php b/admin/admin-init.php
index 9a7adc1bc01..e2de10d1e2c 100644
--- a/admin/admin-init.php
+++ b/admin/admin-init.php
@@ -18,6 +18,7 @@ function woocommerce_admin_init() {
include_once( 'admin-dashboard.php' );
include_once( 'admin-import.php' );
include_once( 'admin-post-types.php' );
+ include_once( 'admin-reports.php' );
include_once( 'admin-taxonomies.php' );
include_once( 'writepanels/writepanels-init.php' );
}
@@ -46,6 +47,7 @@ function woocommerce_admin_menu() {
add_menu_page(__('WooCommerce'), __('WooCommerce'), 'manage_woocommerce', 'woocommerce' , 'woocommerce_settings', $woocommerce->plugin_url() . '/assets/images/icons/menu_icons.png', 55);
add_submenu_page('woocommerce', __('General Settings', 'woothemes'), __('Settings', 'woothemes') , 'manage_woocommerce', 'woocommerce', 'woocommerce_settings');
+ add_submenu_page('woocommerce', __('Reports', 'woothemes'), __('Reports', 'woothemes') , 'manage_woocommerce', 'woocommerce_reports', 'woocommerce_reports');
add_submenu_page('edit.php?post_type=product', __('Attributes', 'woothemes'), __('Attributes', 'woothemes'), 'manage_woocommerce', 'attributes', 'woocommerce_attributes');
}
diff --git a/admin/admin-reports.php b/admin/admin-reports.php
new file mode 100644
index 00000000000..63a8fc6371b
--- /dev/null
+++ b/admin/admin-reports.php
@@ -0,0 +1,32 @@
+
+
+
+ __('Orders', 'woothemes'),
+ 'products' => __('Products', 'woothemes'),
+ 'customers' => __('Customers', 'woothemes')
+ );
+ foreach ($tabs as $name => $label) :
+ echo ''.$label.'';
+ endforeach;
+ ?>
+
+
+
+ query_vars['suppress_filters'] ) && true == $q->query_vars['suppress_filters'] ) || (!$q->is_tax( 'product_cat' ) && !$q->is_post_type_archive( 'product' ) && !$q->is_page( get_option('woocommerce_shop_page_id') ) && !$q->is_tax( 'product_tag' ))) return;
-
- $meta_query = (array) $q->get( 'meta_query' );
-
- // Visibility
- if ( is_search() ) $in = array( 'visible', 'search' ); else $in = array( 'visible', 'catalog' );
-
- $meta_query[] = array(
- 'key' => 'visibility',
- 'value' => $in,
- 'compare' => 'IN'
- );
-
- // In stock
- if (get_option('woocommerce_hide_out_of_stock_items')=='yes') :
- $meta_query[] = array(
- 'key' => 'stock_status',
- 'value' => 'instock',
- 'compare' => '='
- );
- endif;
-
- // Ordering
- if (isset($_POST['orderby']) && $_POST['orderby'] != '') $_SESSION['orderby'] = $_POST['orderby'];
- $current_order = (isset($_SESSION['orderby'])) ? $_SESSION['orderby'] : 'title';
-
- switch ($current_order) :
- case 'date' :
- $orderby = 'date';
- $order = 'desc';
- $meta_key = '';
- break;
- case 'price' :
- $orderby = 'meta_value_num';
- $order = 'asc';
- $meta_key = 'price';
- break;
- default :
- $orderby = 'title';
- $order = 'asc';
- $meta_key = '';
- break;
- endswitch;
-
- // Get a list of post id's which match the current filters set (in the layered nav and price filter)
- $post__in = array_unique(apply_filters('loop-shop-posts-in', array()));
-
- // Ordering query vars
- $q->set( 'orderby', $orderby );
- $q->set( 'order', $order );
- $q->set( 'meta_key', $meta_key );
-
- // Query vars that affect posts shown
- $q->set( 'post_type', 'product' );
- $q->set( 'meta_query', $meta_query );
- $q->set( 'post__in', $post__in );
- $q->set( 'posts_per_page', apply_filters('loop_shop_per_page', get_option('posts_per_page')) );
-
- // Store variables
- $woocommerce->query->post__in = $post__in;
- $woocommerce->query->meta_query = $meta_query;
-
- // We're on a shop page so queue the woocommerce_get_products_in_view function
- add_action('wp', 'woocommerce_get_products_in_view', 2);
-}
-
-/**
- * Remove parse_query so it only applies to main loop
- */
-add_action('wp', 'woocommerce_remove_parse_query');
-
-function woocommerce_remove_parse_query() {
- remove_filter( 'parse_query', 'woocommerce_parse_query' );
-}
-
-/**
- * Get an unpaginated list all product ID's (both filtered and unfiltered)
- */
-function woocommerce_get_products_in_view() {
-
- global $wp_query, $woocommerce;
-
- $unfiltered_product_ids = array();
-
- // Get all visible posts, regardless of filters
- $unfiltered_product_ids = get_posts(
- array_merge(
- $wp_query->query,
- array(
- 'post_type' => 'product',
- 'numberposts' => -1,
- 'post_status' => 'publish',
- 'meta_query' => $woocommerce->query->meta_query,
- 'fields' => 'ids'
- )
- )
- );
-
- // Store the variable
- $woocommerce->query->unfiltered_product_ids = $unfiltered_product_ids;
-
- // Also store filtered posts ids...
- if (sizeof($woocommerce->query->post__in)>0) :
- $woocommerce->query->filtered_product_ids = array_intersect($woocommerce->query->unfiltered_product_ids, $woocommerce->query->post__in);
- else :
- $woocommerce->query->filtered_product_ids = $woocommerce->query->unfiltered_product_ids;
- endif;
-
- // And filtered post ids which just take layered nav into consideration (to find max price in the price widget)
- if (sizeof($woocommerce->query->layered_nav_post__in)>0) :
- $woocommerce->query->layered_nav_product_ids = array_intersect($woocommerce->query->unfiltered_product_ids, $woocommerce->query->layered_nav_post__in);
- else :
- $woocommerce->query->layered_nav_product_ids = $woocommerce->query->unfiltered_product_ids;
- endif;
-}
\ No newline at end of file