Author: super_admin_v3x

Headers already sent …

if you get something like: Warning: session_start(): Cannot start session when headers already sent in [site-path]/wp-content/plugins/wppizza[xyz]/[some-file] on line [some-line] or Warning: cannot modify header information – headers already sent by [site-path]/[some-dicetory]/[some-file] on line [some-line] The problem is that either: – php notices/warnings/errors etc are output 

Extensions / Gateways

Please refer to the relevant sub-section in the navigation on the left. Note: Documentation for extensions and gateways will always be work in progress and will expand over time.

Add Ingredients

Filters available in WPPizza Add Ingredients

wppizza_ingredients_filter_email_styles

The below filter will *only* apply to emails (as emails need style declarations to be added inline). For Print templates, use the css input in WPPizza->Templates->Print in conjunction with your browsers element inspector

@param: array
@return: array

add_filter('wppizza_ingredients_filter_email_styles', 'myprefix_ingredients_filter_email_styles');
function myprefix_ingredients_filter_email_styles($styles){
	/*  
	default styles passed on to $styles parameter are currently as follows (though might get tweaked in the future) 
		
	$styles = array();
	$styles['ingrinfo'] 	= 'white-space: initial; margin: 3px; line-height: 130%;' ;
	$styles['ingr_item'] 	= 'font-style: italic;' ;
	$styles['ingrinfo'] 	= 'white-space: initial; margin: 3px 3px 3px 20px; line-height: 130%; font-size:85%;' ;
	$styles['ingrgrp'] 	= 'white-space: initial; margin: 3px;line-height: 130%;' ;
	$styles['ingrgrp_0'] 	= 'white-space: initial; margin: 3px;line-height: 130%; display:inline' ;
	$styles['ingrgrp_1'] 	= 'white-space: initial; margin: 3px;line-height: 130%; margin-left: 15px' ;
	$styles['ingrgrp_lbl'] 	= 'font-weight: bold; padding-right: 3px;' ;
	$styles['comments'] 	= 'padding: 3px 0; font-size: 75%;' ;
	*/

	/* 

	if you want to - for example - increase the font for all ingredients in your emails to 
	120% instead of the default of 85%, you can do this 

	*/
	$styles['ingrinfo'] .='font-size:120%;';

	/* 
	or you could override the whole declaration , removing any margins etc and setting font to 14px
	*/
	$styles['ingrinfo'] ='font-size:14px;';

	/* 
	if - for example - you want to display all ingredients underneath each other (as opposed to next to each other) you could - as one of many options to achieve this - add  
	*/
	$styles['ingr_item'] .='display:block;';

return $styles;
}

WordPress inbuilt ‘get_post_metadata’ filter

A snippet you could use to override the ‘half/half’ and/or ‘quarter’ options on a per size basis for any menu item.
I.e if you have a menu item with “small”, “medium”, “large” and “xxl” sizes and have enabled “whole”, “halfs” and “quarters” for this but do *not* want to have the “halfs” or “quarters” option available for the “small” size, you could do something like the below

@param: mixed
@param: int
@param: str
@return: mixed


/*
The below can be condensed somewhat , but for clarity 
we keep conditionals a bit more separate here in this example
*/
//Add the filter, using wordpress inbuilt 'get_post_metadata' filters
add_filter('get_post_metadata', 'myprefix_modify_wppizzaingredients_slices', 100, 3);
function myprefix_modify_wppizzaingredients_slices($metadata, $object_id, $meta_key){

	/*
	making sure we are only ever listening to *frontend* ajax requests here 
	(there are other way to do this too, but for simplicities sake...)
	*/
	if(!empty($_POST['action']) && $_POST['action'] === 'wppizza_ingredients_json' ){

		/* 
		the meta key used in the wppizza add ingredients plugin 
		that determines whether or not half/half and/or quarters was enabled
		*/
		$ai_meta_key = 'add_ingredients_multi';

		//a) check for add_ingredients_multi meta key
		if ( !empty( $meta_key ) && $ai_meta_key == $meta_key ){

			//b) only apply to menu item with id "35" (change as needed)
			/* 
				Option: 
				if you wanted to select a whole category instead - for example category with id 183 - you could use 
				if( isset($_POST['vars']['catId']) && $_POST['vars']['catId'] == 183)	instead
			*/

			if($object_id == 35){	
				// c) only apply to first - typically smallest - size. Sizes are zero indexed , so we look for 0, if you want to target the 2nd size use $_POST['vars']['size'] == 1 and so on)	

				if( isset($_POST['vars']['size']) && $_POST['vars']['size'] == 0){
				
				/*
					set the new meta data to return 
					this will in effect force only the "whole" option to be enabled
					overriding any half/half , quarter settings.
				
					To force half/half instead set a value of:  array( 2 => 2 )
					To force half/half and quarters only (but no whole) set a value of:  array( 2 => 2, 4 => 4 )
					or whatever combination you want to choose
				*/
				$set_meta = array();
				$set_meta[0][$ai_meta_key] = array( 1 => 1);//whole only
				
				
				return $set_meta;
				}
			}
		}
	}

/*
	return standard meta data 
	if conditionals above do not apply
*/
return $metadata;
}

WPPizza Autoprint

Customisations WPPizza Autoprint Adjusting print output of selected autoprint template Your print template selected MUST be set to “Html” to be able to access the css setting Go to “Wppizza -> Templates -> Print” Locate the template you have selected to use as your autoprint 

Confirm | Reject | Notify

Filters available using WPPizza – Confirm | Reject | Notify wppizza_crn_sms_branding Allow “Branding”: Send some arbitrary text instead of sending a phonenumber as “Sender ID”. Be aware that this will not work if you are using 2-way or 3-way SMS settings (as the recipient would 

Cross-Sells

Widgets/Shortcode

Cross Sells – Shortcodes / Widget settings
 
 
title=’some title’ optional string Label above Cross Sells (Omit for default as set in Wppizza->Localization->Cross Sells)
max=’5′ optional integer Maximum number of x-sells results to retrieve (Omit for default as set in WPPizza->Order Settings->Cross Sells)
view=’3′ optional integer Number of cross sells / cross sells width to be displayed in initial view. (default: 3 if omitted).

Think of it as width being 1/3 of the container if set to 3, 1/4 of the container if set to 4 etc, regardless of number of total results
arrows=’1′ optional bool (0|1) Enable to display navigational left/right arrows next to results (if applicable) (Default : enabled|1 if omitted)
dots=’0′ optional bool (0|1) Enable to display navigational dots under any results (if applicable). (Default : disabled|0 if omitted)
infinite=’0′ optional bool (0|1) Enable for infinite scrolling/swiping of any results. (Default : disabled|0 if omitted)
no_additives=’0′ optional bool (0|1) Enable for infinite scrolling/swiping of any results. (Default : auto display if omitted)
breakpoints=’800:2,400:1′ optional str (comma/colon separated or 0 to remove all breakpoints) Set responsive breakpoints. (Default : 800:2,400:1 if omitted or empty)
Widget Only : Exclude from posts/pages optional str (comma separated integers) Set comma separated integers of pages/posts you do NOT want the widget to be displayed on
Examples
 
[wppizza_xsells title='some title' max='5' view='3' arrows='1' dots='1' infinite='0' no_additives='1' breakpoints='600:2,400:1']
– Set title to “some title”
– Display (up to) 5 results
– 3 results initially visible (Note, if there are fewer than 3 results, each one will still only take up the space of 1/3rd of the container)
– Show arrows (if more results than initially visible)
– Show dots (if more results than initially visible)
– Disable infinite scrolling
– Suppress any additives
– If container is <=600px wide show only 2 in initial view/box, each taking up 50% of the container | if container is <=400px wide show only 1 in initial view/box, each taking up 100% of the container
[wppizza_xsells]
this would be the same as
[wppizza_xsells title='/*set in localization*/' max='/*as set in options*/' view='3' arrows='1' dots='0' infinite='0' no_additives='0' breakpoints='800:2,400:1']
– Set title as set in WPPizza->Localization->Cross Sells
– Max results as set in WPPizza->Order Settings->Cross Sells
– 3 results initially visible
– Show arrows (if more results than initially visible)
– No dots
– No infinite scrolling
– Additives shown if applicable
– If container is <=800px wide show only 2 in initial view/box, each taking up 50% of the container | if container is <=400px wide show only 1 in initial view/box, each taking up 100% of the container

Filters to alter the behaviour of the WPPizza cross-sell display

wppizza_xsells_filter_slick_parameters

The “WPPizza Cross-Sell” extension utilises the “Slick” Carousel to display the cross-sell items. The filter below allows you to alter the settings according to your requirements and the options available

For a full list of available parameters please refer to http://kenwheeler.github.io/slick/

@param: array(parameters)
@return: array(filtered parameters)

example:

add_filter('wppizza_xsells_filter_slick_parameters', 'my_slick_parameters');
function my_slick_parameters($slick_parameters){
	
	/*	
		the following defaults are being set in the plugin by default
					
		$slick_parameters['dots'] = false;
		$slick_parameters['arrows'] = true;
		$slick_parameters['infinite'] = false;
		/* default 3 slides */
		$slick_parameters['slidesToShow'] = 3 ;
		$slick_parameters['slidesToScroll'] = 3 ;
		$slick_parameters['responsive'] = array();
		/* under 800 px browser width, 2 slides only */
		$slick_parameters['responsive'][0]['breakpoint'] = 800;
		$slick_parameters['responsive'][0]['settings'] = array();
		$slick_parameters['responsive'][0]['settings']['slidesToShow'] = 2;
		$slick_parameters['responsive'][0]['settings']['slidesToScroll'] = 2;
		/* under 400 px browser width, 1 slide only */
		$slick_parameters['responsive'][1]['breakpoint'] = 400;
		$slick_parameters['responsive'][1]['settings'] = array();
		$slick_parameters['responsive'][1]['settings']['slidesToShow'] = 1;
		$slick_parameters['responsive'][1]['settings']['slidesToScroll'] = 1;

	*/

	/* example: enabling dots */
	$slick_parameters['dots'] = true;
	
	/* example: enabling infinite loop*/
	$slick_parameters['infinite'] = true;

	/* example: display 4 visible items (instead of the default 3)*/
	$slick_parameters['slidesToShow'] = 4 ;
	$slick_parameters['slidesToScroll'] = 4 ;

	/* example: setting only one breakpoint at 600 with 1 slide only */
	unset($slick_parameters['responsive']);/* first unset default breakpoints */
	$slick_parameters['responsive'][0]['breakpoint'] = 600;
	$slick_parameters['responsive'][0]['settings'] = array();
	$slick_parameters['responsive'][0]['settings']['slidesToShow'] = 1;
	$slick_parameters['responsive'][0]['settings']['slidesToScroll'] = 1;

return $slick_parameters ;
}

wppizza_xsells_filter_shortcode_atts

The Cross-Sells widget is – in essence – displayed by executing the following shortcode: [wppizza single='23,3' price_id='1,0' style='wppizza_xsells' showadditives='0' noheader='1' notags='1'] where “single” and “price_id” will determine which menu items and respective sizes to display. Although the ‘single’ and ‘price_id’ attributes are not filterable, *some* of the other display attributes – such as “currency_main”, “currency_price” , “image_prettyphoto” for example – can be used additionally if you would like to override some display settings. See https://docs.wp-pizza.com/shortcodes/?section=by-category for shortcode attributes

@param: array(default attributes)
@return: array(filtered parameters)

example:

add_filter('wppizza_xsells_filter_shortcode_atts', 'my_shortcode_atts');
function my_shortcode_atts($sc_attributes){
	
	/*	
		the following defaults are being set in the plugin by default
					
		$sc_attributes = array();
		$sc_attributes['style'] = 'wppizza_xsells';//uses set style in xsales plugin settings
		$sc_attributes['showadditives'] = '0';//do not show additives under each item (as they will automatically be displayed combined underneath ifnecessary)
		$sc_attributes['noheader'] = '1';//
		$sc_attributes['notags'] = '1';//only use text from content, stripping all tags/elements 

	*/

	/* example: do not display main currency symbol even though it's is enabled for "normal" menu items in WPPizza->Layout*/
	$sc_attributes['currency_main'] = 0;
	
	/* example: do not display small currency symbol next to the price even though it's is enabled for "normal" menu items in WPPizza->Layout*/
	$sc_attributes['currency_price'] = 0;

	/* example: do NOT strip element tags from content */
	unset($sc_attributes['notags']);

return $sc_attributes;
}

Delivery By Post/Zipcode

Shortcodes If you wish to display the delivery by post/zip-code selection in a different location [wppizza_dbp] Available attributes: redirect – page/post id to redirect to when submitting selection from shortcode widget (since v5.3). Omit attribute to not redirect. Example: [wppizza_dbp redirect=”6″] If using google maps 

Goodcom Printer

Filter examples to alter the goodcom printer output wppizza_goodcom_printer_filter_xml_site Using the 3 filters below as described will result in a print layout similar to this screenshot. The final layout will depend on actual order and customer values submitted. @param: array(parameters) @return: array(filtered parameters) /* example 

Google Cloudprint

Filters available using WPPizza Google Cloudprint

wppizza_gcp_filter_copies

Sending the second copy of an order to a different printer (id) set in the same google cloudprint account. The Number of copies in the plugin settings WPPizza->Cloudprintmust be set to 2 or more for this to have any effect.

@param: str (printer id)
@param: int (current copy )
@param: int (order id )
@param: array (order formatted )
@param: array (plugin options)
@return: str (printer id)

add_filter('wppizza_gcp_filter_copies', 'myprefix_gpc_set_printerid', 10, 5);
function myprefix_gpc_set_printerid($printer_id, $copy, $order_id, $order_formatted, $gpcOptions){
	/* set a different printer id for the second copy */
	if($copy==2){
		$printer_id = 'some-printer-id-you-need-to set';/* set the printer id here */
	}
return $printer_id;
}

wppizza_gcp_filter_printerid

If you do not need to or want to send multiple copies but simply want to set a dynamic printer id depending on some parameters received, you can try something like this

@param: str (printer id)
@param: int (order id )
@param: array (order formatted )
@param: array (plugin options)
@return: str (printer id)

add_filter('wppizza_gcp_filter_printerid', 'myprefix_gpc_set_printerid', 10, 4);
function myprefix_gpc_set_printerid($printer_id, $order_id, $order_formatted, $gpcOptions){
	/* set a different printer id for the second copy */
	if($order_formatted['some']['key']['selected']=='some value'){
		$printer_id = 'some-printer-id-you-need-to set';/* set the printer id here */
	}
return $printer_id;
}

Pdf Invoices

CSS Declaration Examples and Filters available using WPPizza – Pdf Invoices Using your own font (this must be a truetype font – see also “Know Issues” below) To use your own font, follow the guide below: Go to “WPPizza -> Settings-> PDF Invoices” Make sure