WPPizza – A Restaurant Plugin for WordPress › Support › Code Snippets WPPizza v2.x (read only)
(Code Snippets for v3.x) › change prices of menu item(s) depending on day of week
Viewing 1 post (of 1 total)
- AuthorPosts
- 16 December, 2015 at 9:32 pm #14598
a filter to change menu items prices depending on day of week.
to use in your theme’s functions.php/*** change "myprefix" occurences with your own prefix change sections labelled "== ADJUST .....== as required ***/ add_filter('get_post_metadata', 'myprefix_wppizza_item_price', 10, 4); function myprefix_wppizza_item_price($metadata, $object_id, $meta_key, $single) { /******************************** skip if non wppizza meta key ********************************/ if( $meta_key != 'wppizza' ){ return;} /******************************* menu item id's that need to change prices depending on day == ADJUST ID'S (wppizza menu item id's) AS REQUIRED == ********************************/ $menu_item_ids=array(5,65,66,32); /** if menu item id not in array above, skip **/ if(!in_array($object_id, $menu_item_ids )){return;} /******************************** get current weekday *********************************/ $current_weekday=date('w',current_time('timestamp'));//Numeric representation of the day of the week. 0 (for Sunday) through 6 (for Saturday) /** only change prices on wednesdays (i.e current_weekday==3), else skip == ADJUST WEEKDAY INTEGER AS REQUIRED == **/ if($current_weekday!=3){ return ;} /************************************ ok, now let's change meta prices *************************************/ /*get current cached data*/ $meta_cache = wp_cache_get( $object_id, 'post_meta' ); /** if cache is empty (always, on all ajax calls it seems) get meta data however, we need to remove and re-add filter or we'll end up in an infinite loop ! **/ if(empty($meta_cache)){ /*remove filter*/ remove_filter( 'get_post_metadata', 'myprefix_wppizza_item_price', 10 ); $meta_cache[$meta_key][0]=get_post_meta($object_id, $meta_key, true ); add_filter('get_post_metadata', 'myprefix_wppizza_item_price', 10, 4); } /*filter expects array as return*/ $metadata=array(); /**unserialize meta*/ $metadata[0] = maybe_unserialize($meta_cache[$meta_key][0]) ; /************************************ set prices as needed price tiers are zero indexed [ == ADJUST PRICE ADJUSTMENST AS REQUIRED == ] if you need this changed differently for each individual menu item, wrap the below into a conditional like if($object_id=65){...} if($object_id=66){...} etc *************************************/ /**first (smallest -> index 0 ) size -> minus 0.50**/ $metadata[0]['prices'][0]=$metadata[0]['prices'][0]-0.5; /**second (medium -> index 1 ) size, if exists -> minus 1.20**/ if(!empty($metadata[0]['prices'][1])){ $metadata[0]['prices'][1]=$metadata[0]['prices'][1]-1.2; } /**third (largest -> index 2 ) size, if exists -> minus 1.50**/ if(!empty($metadata[0]['prices'][2])){ $metadata[0]['prices'][2]=$metadata[0]['prices'][2]-1.5; } /* if you have more than 3 sizes, change indexes as required (zero indexed) the 4th would become [0]['prices'][3] the 5th would become [0]['prices'][4] and so on */ /**return the changed meta data**/ return $metadata; }
- AuthorPosts
Viewing 1 post (of 1 total)
- The topic ‘change prices of menu item(s) depending on day of week’ is closed to new replies.