1. Modify Css / Styles / Layout
    1. Frontend Css
    2. Admin Css
  2. Templates
    1. Pages
      1. page.order.php
      2. page.confirm-order.php
      3. page.processing.php
      4. page.thankyou.php
      5. page.cancelled.php
      6. page.purchase-history.php
    2. Order
      1. itemised.php
      2. summary.php
      3. transaction_details.php
    3. Global
      1. orderinfo.php (Widget)
      2. openingtimes.php (Widget)
      3. additives.php (Widget)
      4. navigation.list.php (Widget)
      5. navigation.dropdown.php (Widget)
      6. search.php (Widget)
      7. totals.php (Widget)
      8. pickup_choice.php (Mixed)
      9. login.php (Module)
      10. profile.register.php (Module)
      11. profile.update.php (Module)
      12. pages.pickup_note.php (Module)
      13. formfields.inputs.php (Module)
      14. formfields.values.php (Module)
    4. Cart
      1. cart.container.php
      2. cart.shopclosed.php
      3. cart.empty.php
      4. cart.pickup_note.php
      5. cart.checkout_button.php
      6. cart.empty_cart_button.php
      7. cart.minimum_order.php
      8. minicart.php
    5. Loop (Menu Items)
      1. header.php
      2. no_results.php
      3. posts.title.php
      4. posts.thumbnail.php
      5. posts.prices.php
      6. posts.content.php
      7. posts.permalink.php
      8. additives.php
      9. pagination.php
      10. theme-wrapper.php
    6. Search Results
      1. search.php
    7. Single Menu Item
      1. single.php
    8. functions.php
  3. Filters, Actions, Functions
    1. Global WPPizza functions
    2. WPPizza options (Filter)
    3. Currency (Filter)
    4. After every order (Action)
    5. Getting Orders (Function)
  4. Constants
    1. Admin Name
    2. Admin Menu Icon
  5. Codesnippets
    1. Create your own sales report
    2. Order history - todays orders
    3. Add attachment to email
    4. On order status update
    5. Unconfirmed Orders
    6. Customise order id
    7. Changing post type arguments
    8. Gateway filter frontend
    9. Users previous orders
    10. Dynamic menu item prices
    11. Prices output loop
    12. Pickup Opening Times
    13. Additional validation function

5.1.Create your own sales report

Modify the sales report generated when clicking the export link in WPPizza -> Reports

the sales report can be manipulated using a variety of filters/actions according to the examples below. Depending on your requirements, you might need to use one, more or all of them.


alter the query according to your requirements

@param: str (the whole query string)
@param: str (blog prefix)
@param: str (more or less the WHERE part of the query using the appropriate date ranges etc – just for convenience in some circumstances)
@return: str


add_filter('wppizza_filter_report_query', 'my_prefix_my_query', 10, 3);
function my_prefix_my_query($ordersQuery, $wpdbPrefix, $oQuery){
	 maybe not the most useful example but to keep it simple - 
	 look at the table structure of the wppizza_orders table to create a query appropriate to your scenario  
	$ordersQuery = str_ireplace("WHERE", "WHERE wp_user_id = '5' AND ");/* keep the query as is, but only query sales from user with user_id 5 */

return $ordersQuery;


modify the dataset array that will be passed on to the wppizza_report_export function and the wppizza_custom_report action below

@param: array (current dataset)
@param: array (order details returned for each order the query result includes)
@return: array


add_filter('wppizza_filter_report_datasets', 'my_prefix_my_datasets', 10, 2);
function my_prefix_my_datasets($datasets, $processOrder){
	/* adding my_custom_dataset to already existing/default ones */	
	$datasets['my_custom_dataset'] = array();
	$datasets['my_custom_dataset']['count'] = 0;
	/* a very basic example */
	foreach($processOrder as $k=>$v){
		/* use print_r($v) to get all array key/values associated with an order*/
		$datasets['my_custom_dataset']['count'] ++; 
		$datasets['my_custom_dataset'][$k]['value'] = 'some value for order with key '.$k.'';

return $datasets;


modify the results (rows/columns etc) to be used in the csv file to export/save

@param: array ($result – array of csv parts/results to be included in report)
@param: array ($report_data – array of report_data including datasets)
@return: array


add_action('wppizza_filter_reports_export_results', 'my_custom_reports_export_results');
function my_custom_reports_export_results($result, $report_data){
	Check / vardump $result parameter to get array keys/values of the report
	some examples below - modify as required
	/* do NOT include the "sales value by order status"  in csv */

	/* do NOT include the "sales value by gateway"  in csv */

	/* do NOT include "sales by item" in csv */
	 add 'my customised dataset' created by using wppizza_filter_report_datasets - see example above - to the report output 
	$result['my_custom_dataset'] = '';// initialise the string
	$result['my_custom_dataset'] .= PHP_EOL . '"some label"'. PHP_EOL ; /* add header row */
	/* add results rows */
	foreach($report_data['dataset']['my_custom_dataset'] as $key=>$array){
		$result['my_custom_dataset'] .= $array['value']; // add data row
		$result['my_custom_dataset'] .=PHP_EOL;// make sure to start a new line for each new row
	$result['my_custom_dataset'] .=PHP_EOL . PHP_EOL; // add another couple of empty lines for clarity after the end of it all

return $result;


creating your own export report, completely REPLACING the whole function with your own

@param: array ($report_data)
@return: void

as i starting point i would suggest the following
– copy the whole ‘wppizza_report_export’ function (located in classes/subpages/subpage.reports.php) as your ‘my_custom_report_export’ function.
– you must remove the action hook (do_action(‘wppizza_custom_report’, $report_data);) in that copy or you will have an infinite loop
– edit as required

add_action('wppizza_custom_report', 'my_custom_report_export');
function my_custom_report_export($report_data){
	 run your own reports functions using a copy of  
	wppizza_report_export (see notes above), so it's something like:

	$currency = $report_data['currency'];
	$dataset = $report_data['dataset'];/* $dataset  will also now contain your $datasets['my_custom_dataset'] from above - do print_r($report_data to get the whole array) */

	 ... a lot more code ....
	header("Content-Length: " . strlen($result));
	echo $result;
	exit();// dont forget to exit
Yes No Suggest edit
Suggest Edit

documentor id 5