Author: super_admin_v3x

WPPizza Mailinglists

Customisations of selected WPPizza Mailinglists Freshmail @param: array @return: array /* Adding preconfigured custom fields */ add_filter(‘wppizza_mll_freshmail_custom_fields’, ‘myprefix_freshmail_customfields’); function myprefix_freshmail_customfields($custom_fields){ /* a) Assign the appropriate field in “WPPizza -> Order Settings -> Mailinglists : Customers Name Formfield” b) Create a custom field for your selected 

Coupons and Discounts

Filters available for WPPizza Coupons and Discounts wppizza_cad_filter_discounts Allow to filter (unset) applied discounts – identified by their ID – depending on custom conditions related to cart contents. As with all customisations, use at your own risk. You should test this thoroughly /* @since 2.1.4 

Preorder

Customisations WPPizza Preorder

Highlighting preorders for days after today in *emails* sent (for print templates, simply use css declarations)

Your email template(s) selected MUST be set to “Html” for this to make any difference set conditionals as required

@param: array
@param: array
@param: str
@param: int
@param: array
@return: array

add_filter( 'wppizza_filter_template_section_customer_styles', 'myprefix_set_email_styles', 10, 5 );
function myprefix_set_email_styles($template_styles, $parameters, $template_type, $template_id, $order){
	/*
	restricting to email templates here 
	*/
	if($template_type == 'emails'){
	
		/*
			set as variable for ease of use 
		*/
		$pluginSlug = 'wppizza_preorder';
	
		/*
			get preorder meta value / timestamp
			this will be something like '2021-02-11 13:45:00' OR 'asap' if nothing was selected
		*/
		$preorder =  wppizza_get_order_meta($order['ordervars']['order_id']['value'], $pluginSlug, true );
		
		/*
			end of day today, based on wordpress timezone settings current time
		*/
		$eod = date('Y-m-d 23:59:59', WPPIZZA_WP_TIME);
		
		/*
			as an example, make the preorder text in the emails red if 
			preorder time is on/after midnight tonight and set fontsize
			set your conditionals as required
		*/
		if($preorder !='asap' && $preorder > $eod ){
			$template_styles[''.$pluginSlug.'-tdall'] = 'color:red;font-size:120%';
		}
		
	}
return $template_styles;
}

Adding additional date format(s) – (see php date format for details)

As with all customisations, use at your own risk. You should test this thoroughly, especially if you want to use textual representations of a part of the date (months, weekdays) or separators other than:

  • “/”(slash)
  • “-“(hyphen)
  • ” “(space)
  • “.”(dots)

Whatever you do, do not use/enable “j F, Y” here as the comma after a textual month will stop the javascript library used from validating the date

@param: array
@return: array

add_filter( 'wppizza_po_filter_dateformat', 'myprefix_add_po_date_format');
function myprefix_add_po_date_format($date_format){
	/* just as example how to do this, this already exists as an option */
	$date_format[] = 'M j, Y';
return $date_format;
}

Alter preorder date/time format *after an order has been made* (I.e in thank you page, emails etc ), regardless of plugin settings

@param: array
@param: array
@param: array
@param: array
@return: array

add_filter('wppizza_filter_order_details_formatted', 'my_custom_details_formatted', 10, 4);
function my_custom_details_formatted($order_formatted, $order_ini, $customer_ini, $order_values){
	
	/*
		preorder plugin slug
	*/
	$plugin_slug = 'wppizza_preorder';
	
	/*
		order id
	*/
	$order_id = $order_values['id'];
	
	/*
		get preorder metavalue timestamp, and reformat from timestamp
		skip if 'asap' 
	*/
	$preorder_meta_value = wppizza_get_order_meta( $order_id, $plugin_slug, true);	
	
	if(!empty($preorder_meta_value) && $preorder_meta_value != 'asap'){
		
		/* 
			set desired format 
		*/
		$custom_format = date('l, d M Y @ H|i|s', strtotime($preorder_meta_value));
		/* 
			alter output of preorder value in emails prints etc
		*/		
		$order_formatted['sections']['customer'][$plugin_slug]['value'] = $custom_format;
		

	}


return $order_formatted;	
}

Plugin Options

Display a set WPPizza plugin option Display the (raw, unformatted) value of an option set in the WPPizza plugin (strings only). Use your browsers element inspector on an input element to determine the page/parameter combination. If you need access to other parameters not returned by 

Layout (Menu Items, General)

If you wish to alter the display of the WPPizza menu items – alongside many other layout elements – from the installed default, use any of the options below Goto “WPPizza ->Layout” Goto “Style” on that page and choose from one of the style options 

Checkout Formfields

Modify the customer form fields available on the checkout page

A few examples as to how you can show/hide/add/modify input formfields available on the checkout page

Simple show/hide formfields using css selectors

If you wish to simply show hide some formfields when an order is set to be a pickup order.
See here , for options as to where to add this css

example:

/**********************************************************
	target specific elements on pickup
	use your browsers element inspector to ascertain the exact classname you need to target
**********************************************************/
.wppizza-order-ispickup .wppizza-personal-details > .wppizza-cname{display:none}
.wppizza-order-ispickup .wppizza-personal-details > .wppizza-caddress{display:none}
/* etc etc */

Make sure to not hide things that you have also set to be “required” (unless they are already prefilled in some way) or the customer will never be able to check out …

wppizza_register_formfields

Add / modify a formfield on the checkout page. First of all, you can of course already add/remove and conditionally set various formfield properties by going to WPPizza ->Order Form. If you however need some more granular control or simply add your own, see the examples below

.

example:

/*************************************************** 
	add the filter and corresponding function
****************************************************/
add_filter('wppizza_register_formfields', 'my_prefix_modify_wppizza_formfields');
function my_prefix_modify_wppizza_formfields($formfields){

	/* 
		*unique* identifier for the formfield you want to add
		if you add more than one, each one must be a unique id
		for simplicity and demonstration purposes the some is being used here for all !

		if you wish ta alter an already existing formfield use that formfields key instead 
		a print_r($formfields) will show you all registered formfields and their keys if you need to identify a particular one 

	*/
	$unique_ident = 'my_unique_formfield_id';


	/*********************************************** 
		adding a text formfield 
	***********************************************/
	$formfields[$unique_ident ] = array(
	
		/* sort order - at which position is this field displayed */
		'sort' => 100,

		/* the unique ident  */
		'key' => $unique_ident ,

		/* label displayed for the formfield */
		'lbl' => 'some label',

		/* should be defined as an array, with the first value being false  */
		'value' => array(false),

		/* set to text to display a text input */
		'type' => 'text',

		/* true to enable (pointless to set this to false)*/
		'enabled' => true,

		/* true to make the field required on delivery, false otherwise */
		'required' => true,

		/* true to make the field required on pickup, false otherwise */
		'required_on_pickup' => true,

		/* true to prefill with a value if it is known (will only ever do anything with 'onregister' being true as well) */
		'prefill' => false,

		/* true to make field part of the user registration values */
		'onregister' => false,

		/* true to add the value entered to the email subject  */
		'add_to_subject_line' => false,

		/* input placeholder  */
		'placeholder' => 'my placeholder',

		/* validation as available wppizza->order form. as there can be multiple validation rules, this should be an array*/
		'validation' => array(
			'default' => true,
		),			
	);


	/*********************************************** 
		adding a select dropdown
	***********************************************/
	$formfields[$unique_ident ] = array(
	
		/* sort order - at which position is this field displayed */
		'sort' => 100,

		/* the unique ident  */
		'key' => $unique_ident ,

		/* label displayed for the formfield */
		'lbl' => 'some label',

		/* an array of available dropdown values*/
		'value' => array('1st value','2nd value','3rd value','Nth value'),

		/* set to select to display a select dropdown*/
		'type' => 'select ',

		/* true to enable (pointless to set this to false)*/
		'enabled' => true,

		/* true to make the field required on delivery, false otherwise */
		'required' => true,

		/* true to make the field required on pickup, false otherwise */
		'required_on_pickup' => true,

		/* true to prefill with a value if it is known (will only ever do anything with 'onregister' being true as well) */
		'prefill' => false,

		/* true to make field part of the user registration values */
		'onregister' => false,

		/* true to add the value entered to the email subject  */
		'add_to_subject_line' => false,

		/* placeholder - used as initial, non-selected value  or bool false / empty */
		'placeholder' => '--please select--',

		/* validation as available wppizza->order form. as there can be multiple validation rules, this should be an array, 
		however as this is a select field , the rules as set below are really the only sensible setting here
		*/
		'validation' => array(
			'default' => true,
		),			
	);


	/*********************************************** 
		adding radio inputs 
	***********************************************/
	$formfields[$unique_ident ] = array(
	
		/* sort order - at which position is this field displayed */
		'sort' => 100,

		/* the unique ident  */
		'key' => $unique_ident ,

		/* label displayed for the formfield */
		'lbl' => 'some label',

		/* an array of available radio values*/
		'value' => array('1st value','2nd value','3rd value','Nth value'),

		/* set to select to display radio choices */
		'type' => 'radio',

		/* true to enable (pointless to set this to false)*/
		'enabled' => true,

		/* true to make the field required on delivery, false otherwise  */
		'required' => true,

		/* true to make the field required on pickup, false otherwise */
		'required_on_pickup' => true,

		/* true to prefill with a value if it is known (will only ever do anything with 'onregister' being true as well) */
		'prefill' => false,

		/* true to make field part of the user registration values */
		'onregister' => false,

		/* true to add the value entered to the email subject  */
		'add_to_subject_line' => false,

		/* ignored for radios  */
		'placeholder' => false,

		/* validation as available wppizza->order form. as there can be multiple validation rules, this should be an array, 
		however as these are radio inputs, the rules as set below are really the only sensible setting here
		*/
		'validation' => array(
			'default' => true,
		),			
	);


	/*********************************************** 
		adding a checkbox
	***********************************************/
	$formfields[$unique_ident ] = array(
	
		/* sort order - at which position is this field displayed */
		'sort' => 100,

		/* the unique ident  */
		'key' => $unique_ident ,

		/* label displayed for the checkbox */
		'lbl' => 'some label',

		/* ignored, but should be set to avoid php notices*/
		'value' => array(false),

		/* set to select to display multiple checkbox choices */
		'type' => 'checkbox',

		/* true to enable (pointless to set this to false)*/
		'enabled' => true,

		/* true to make the field required on delivery, false otherwise  */
		'required' => true,

		/* true to make the field required on pickup, false otherwise */
		'required_on_pickup' => true,

		/* true to prefill with a value if it is known (will only ever do anything with 'onregister' being true as well) */
		'prefill' => false,

		/* true to make field part of the user registration values */
		'onregister' => false,

		/* true to add the value entered to the email subject  */
		'add_to_subject_line' => false,

		/* ignored for checkboxes*/
		'placeholder' => false,

		/* validation as available wppizza->order form. as there can be multiple validation rules, this should be an array, 
		however as these are radio inputs, the rules as set below are really the only sensible setting here
		*/
		'validation' => array(
			'default' => true,
		),			
	);

	/*********************************************** 
		adding multiple checkbox choices
	***********************************************/
	$formfields[$unique_ident ] = array(
	
		/* sort order - at which position is this field displayed */
		'sort' => 100,

		/* the unique ident  */
		'key' => $unique_ident ,

		/* label  */
		'lbl' => 'some label',

		/* an array of checkboxes */
		'value' => array('1st value','2nd value','3rd value','Nth value'),

		/* set to select to display multiple checkbox choices */
		'type' => 'multicheckbox',

		/* true to enable (pointless to set this to false)*/
		'enabled' => true,

		/* true to make the field required on delivery, false otherwise  */
		'required' => true,

		/* true to make the field required on pickup, false otherwise */
		'required_on_pickup' => true,

		/* true to prefill with a value if it is known (will only ever do anything with 'onregister' being true as well) */
		'prefill' => false,

		/* true to make field part of the user registration values */
		'onregister' => false,

		/* true to add the value entered to the email subject  */
		'add_to_subject_line' => false,

		/* ignored for checkboxes*/
		'placeholder' => false,

		/* validation as available wppizza->order form. as there can be multiple validation rules, this should be an array, 
		however as these are radio inputs, the rules as set below are really the only sensible setting here
		*/
		'validation' => array(
			'default' => true,
		),			
	);

	/*********************************************** 
		adding a hidden formfield 
	***********************************************/
	$formfields[$unique_ident ] = array(
	
		/* sort order - at which position is this field displayed */
		'sort' => 100,

		/* the unique ident  */
		'key' => $unique_ident ,

		/* ignored for hidden fields */
		'lbl' => false,

		/* should be defined as an array, with the first value being false  */
		'value' => array(false),

		/* set to hidden to display a hidden input */
		'type' => 'hidden',

		/* true to enable (pointless to set this to false)*/
		'enabled' => true,

		/* true to make the field required on delivery, false otherwise . 
		Warning: if you set this to true, without prefilling it (see below) the customer will never be able to order when delivery is selected !
		*/
		'required' => true,

		/* true to make the field required on pickup, false otherwise . 
		Warning: if you set this to true, without prefilling it (see below) the customer will never be able to order when pickup is selected !
		*/
		'required_on_pickup' => true,

		/* true to prefill with a value if it is known (will only ever do anything with 'onregister' being true as well) */
		'prefill' => false,

		/* true to make field part of the user registration values */
		'onregister' => false,

		/* true to add the value entered to the email subject  */
		'add_to_subject_line' => false,

		/* ignored for hidden fields  */
		'placeholder' => false ,

		/* validation as available wppizza->order form. as there can be multiple validation rules, this should be an array, 
		however as this is a hidden inputs, the rules as set below are really the only sensible setting here
		*/
		'validation' => array(
			'default' => true,
		),			
	);




	/*********************************************** 
		removing a formfield 
		simply unset , or disable
	***********************************************/
	unset($formfields[$unique_ident]); //unset
	$formfields[$unique_ident]['enabled'] = false ; //disable


	/*********************************************** 
		if you want to disable/not show
		a field when pickup is selected
	***********************************************/
	if(wppizza_is_pickup()){//simply use !wppizza_is_pickup() for the reverse
		unset($formfields[$unique_ident]); //unset
		$formfields[$unique_ident]['enabled'] = false ; //disable
	}



return $formfields;
}

For additional conditionals that might be useful (‘cart is empty’ and similar), also see here

Pre-filling form fields

If a formfield is set to have ‘onregister’ and ‘prefill’ set to true, the relevant value will be prefilled/selected when a user logs in, if you want to or need to (especially with hidden fields) always pre-set a specific value I’d suggest something like the below

example:

add_action('init', 'myprefix_prefill_formfields');
function myprefix_prefill_formfields(){

	/*
	prefill a value if it has not ever been set
	*unique* identifier for the formfield you want to prefill 
	*/
	$unique_ident = 'my_unique_formfield_id';

	if(!isset($_SESSION[WPPIZZA_SLUG.'_userdata'][$unique_ident])){
		
		/* text / hidden formfields */
		$_SESSION[WPPIZZA_SLUG.'_userdata'][$unique_ident] = 'some input value';
		
		/* radios - one of the values as defined in 'value' array of the registered formfield*/
		$_SESSION[WPPIZZA_SLUG.'_userdata'][$unique_ident] = '2nd value';

		/* checkbox (single) - boolean */
		$_SESSION[WPPIZZA_SLUG.'_userdata'][$unique_ident] = true; //bool

		/* checkbox (multiple)  - one or more of the values as defined in 'value' array ofthe  registered formfield*/
		$_SESSION[WPPIZZA_SLUG.'_userdata'][$unique_ident] = array('1st value','3rd value') ; //array
	}
	
return;
}

Email Subject Line

Change the default subject line used in emails wppizza_filter_email_subject /*** email subject lines are made up of 3 parts filter each part as required based on your preferences ****/ add_filter(‘wppizza_filter_email_subject’, ‘myprefix_filter_email_subject’, 10, 2); function myprefix_filter_email_subject($subject, $order_formatted){ /* defaults //dynamic depending on settings in wppizza order 

Enable Debug

In your wp-config.php you will find a line that reads (most likely) like this: define(‘WP_DEBUG’, false); REPLACE this with (or if it does not exist simply add the below) define(‘WP_DEBUG’, true); define(‘WP_DEBUG_LOG’, true); define(‘WP_DEBUG_DISPLAY’, false);/*this should NEVER be true for production sites*/ Note: this MUST 

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 to the site instead of being logged
  • another plugin – or your theme/child theme – is outputting content where it should not.

Although the session start warning references a wppizza file, this is *not* in fact a wppizza error/fault (as confusing as this might seem, admittedly) but it points to some other file or plugin outputting content before it should do.
If it’s a “cannot modify header information – headers already sent by” instead, it typically also tells some file and line number.

First of all

:

  • – make sure you do not output any warnings etc by setting your debug like so or even disabling debug altogether if that’s acceptable in your scenario (wppizza does it’s best to ignore those, but has no influence over other plugins of course)
  • – once you have done so, check your site again (clear you browser cache) as this might be all you need to do to make it all work again. Fix other error/notices/warnings at your leaisure

Then – if you are still having session related issues

:

  • – disable all other *non*-wppizza plugins and switch to a wordpress default theme (twenty-xyz) , at least temporarily.
  • – assuming disabling everything non-wppizza related solves the issue, re-enable your plugins/themes one by one, until it does not work again (so you know what is causing it)
  • – fix the issue following the suggestions/guide/answer here or better still, contact the theme/plugin author to fix it.
  • – in the event that the above does still not solve your problem, contact me , making sure to send me relevant info (debug.log, url , version numbers etc ) via the usual channels (contact/email/forums)

PS | FYI: Wppizza uses native php sessions – extensively – that simply will not work if other scripts/plugins/themes output content where they should not.

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.