Update prices in bulk

Update WPPizza menu item prices in bulk , adding 10% to all prices (change values as required)

example function myprefix_update_wppizza_prices:

/*	
 IMPORTANT: RUN THIS ONE TIME ONLY AND DELETE/DISABLE THIS SCRIPT AGAIN WHEN YOU ARE DONE OR YOU WILL CONTINUALLY BE ADDING 10% ON TOP OF 10%
 YOU COULD ALSO ADD AN ADDITIONAL META DATA FLAG PERHAPS TO MAKE SURE IT ONLY GETS UPDATED IF THIS FLAG IS NOT SET YET, BUT I LEAVE THIS
 UP TO THE YOU AS TO HOW OR IF YOU WANT TO DO THAT .
 IN ANY EVENT: I STRONGLY SUGGEST YOU MAKE A BACKUP FIRST AND - AS ALWAYS - USE AT YOUR OWN RISK
*/
/* script must be run on init or later or things will not work */
add_action( 'init', 'myprefix_update_wppizza_prices');
function myprefix_update_wppizza_prices(){
	
	/* 
		the percentage to add to all prices 
		change as required
	*/
	$percent = 10;

	/*
		conditionals: only runs if
		- logged into WP admin
		- logged in user has 'wppizza_cap_menu_items' capabilities
		- the _GET['runonce'] parameter is set (so as to only run it one time , see above)
	*/
	if( is_admin() && current_user_can('wppizza_cap_menu_items') && isset($_GET['runonce'])){
		
		//print info
		print"------------ START UPDATING WPPIZZA ITEMS PRICES  --------------
".PHP_EOL; //wppizza post type $postType = 'wppizza'; //get all wppizza menu items $menuItems = get_posts(array('post_type' => $postType,'numberposts' => -1)); //loop through menu items, getting current prices , add 10% to each price and resave meta foreach($menuItems as $menuItem){ //print info print PHP_EOL."
UPDATING ".$menuItem -> post_title." [ID ".$menuItem -> ID."]
".PHP_EOL; //get current menu item meta data $objMetaData = get_post_meta($menuItem -> ID, $postType, true ); //loop through prices foreach($objMetaData['prices'] as $key => $price){ //adding 10 percent.... $objMetaData['prices'][$key] *= (1 + $percent / 100); //round as per plugin settings.... $objMetaData['prices'][$key] = wppizza_round($objMetaData['prices'][$key]); //print info print" - old price: " . $price . " | new price : " . $objMetaData['prices'][$key] . "
".PHP_EOL; } //re-save meta - comment this line out if you want to view the results first update_post_meta($menuItem -> ID, $postType, $objMetaData) ; } //print info print"----- ALL PRICES UPDATED, DELETE/DISABLE THIS SCRIPT NOW !!! -------"; exit(); } return; }

Usage:
To run this script, add it somewhere where it would be read (your functions.php for example) login to the WP backend and go to http[s]://[your-domain]/wp-admin/?runonce=1 .
DO NOT RELOAD THAT PAGE – SEE ABOVE. The one screen message will tell you when it’s done.

If you want to do the same with the prices of any ingredients of the “WPPizza Add Ingredients” plugin you could do the following in a similar fashion

//script must be run on init or later or things will not work 
add_action( 'init', 'myprefix_update_wppizza_ingredients_prices');
function myprefix_update_wppizza_ingredients_prices(){
	/* 
		the percentage to add to all ingredients prices 
		change as required
	*/
	$percent = 10;

	//same conditional as above 
	if( is_admin() && current_user_can('wppizza_cap_menu_items') && isset($_GET['runonce'])){	
		//ingredients options slug 
		$options_slug = 'wppizza_addingredients';
		
		//get current ingredients option
		$ai_options = get_option($options_slug, 0);
		
		//loop through ingredients , add 10% to each price 
		if(!empty($ai_options['ingredients'])){
		foreach($ai_options['ingredients'] as $key => $ingredient){	
			if(!empty($ingredient['prices'])){
			foreach($ingredient['prices'] as $pKey => $price){
				$ai_options['ingredients'][$key]['prices'][$pKey] *= (1 + $percent / 100);
				$ai_options['ingredients'][$key]['prices'][$pKey] = wppizza_round($ai_options['ingredients'][$key]['prices'][$pKey]);	
			}}				
		}}
		
		/*
			re-save options back to db
		*/
		update_option($options_slug, $ai_options );	
	
	//print info
	print"----- ALL INGREDIENTS PRICES UPDATED, DELETE/DISABLE THIS SCRIPT NOW !!! --------";	
	exit();
	}
	
return;
}