264aa8dee4
* Add initial Variations Report to analytics feature. * Restrict query to variations when not specifying any product IDs. * Add route to get variations without specifying a parent. * Move variations table component to variations report directory. * Add missing LIMIT clause to variations report query. * Remove broken features from Variations table. * Add Variations report controller to CSV emailer. * Add initial Variation Stats endpoint, based on Product Stats. * Hook Variations Report components up to new stats endpoint. * Hook attribute filter up to variations report queries. * Remove variation title filter usage. See: https://github.com/woocommerce/woocommerce-admin/pull/5100 * Use filtered separator in variation name formatting. * Add "single variation" to variations report, fix autocompleter API request. * Fix segmentation by variation. * Add comparison to variations report. * Always include manually specified variations in report results. * Fix variations report table comparison mode. The ReportTable component expects the `filter` query param. * Fixing styling of compare button without table search component. * Add variation filter to Orders report. * Link orders count to orders report filtered by variation. * Orders report: include variation attributes in product names. * Further style tweaks for variations report download button. * Add variations filter to order stats query. * Clean up "category includes" login in REST controllers. Prep for "category excludes" in the Variations report. * Support category exclusion in report filters. * Fix filter param used by the variation report table component. * Add category filter to variations report. * Fix initial selected ReportTable rows when using non-default compareParam. * Add a new autocompleter for variable products. * Add products filter to variations report. * Fix tests. * Handle variation IDs that are no longer found. * Add documentation. * Use getSetting() instead of directly accessing window properties in client code. * Fix ordering Variations by SKU. |
||
---|---|---|
.. | ||
categories | ||
coupons | ||
customers | ||
downloads | ||
orders | ||
products | ||
revenue | ||
stock | ||
taxes | ||
variations | ||
README.md | ||
get-reports.js | ||
index.js | ||
style.scss |
README.md
Reports
The core reports offered by WooCommerce live in this folder. The Header is added automatically by the parent Report component, each individual component should contain just the report contents.
Extending Reports
New reports can be added by third-parties without altering woocommerce-admin
. First, a page will need to be registered in PHP to populate menu items.
function register_page( $report_pages ) {
$report_pages[] = array(
'id' => 'extension-example',
'title' => __( 'Example', 'plugin-domain' ),
'parent' => 'woocommerce-analytics',
'path' => '/analytics/example',
);
return $report_pages;
}
add_filter( 'woocommerce_analytics_report_menu_items', 'register_page' );
Each menu item is defined by an array containing id
, title
, parent
, and path
.
report
(string): The report's id.title
(string): The title shown in the sidebar.parent
(string): The item's parent in the navigational heirarchy.path
(string): The report's relative path.
Next, hook into the JavaScript reports filter, woocommerce_admin_reports_list
, to add a report component.
addFilter(
'woocommerce_admin_reports_list',
'analytics/my-report',
( pages ) => {
return [
...pages,
{
report: 'example',
title: 'My Example Extension',
component: Report,
},
];
}
);
Each report is defined by an object containing report
, title
, component
.
report
(string): The path used to show the report, ex:/analytics/example
title
(string): The title shown in the breadcrumbs & document title.component
(react component): The component containing the report content- everything on the page under the breadcrumbs header.
The component will get the following props:
query
(object): The query string for the current view, can be used to paginate reports, or sort/filter report data.path
(string): The exact path for this view.pathMatch
(string): The route matched for this view, should always be/analytics/:report
.params
(object): This will contain thereport
from the path, which should matchreport
in the page object.