Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Remove Out of Inventory Options From Product Variations
- //This should go in your functions.php file
- add_filter('foxyshop_setup_product_info', 'my_product_setup', 10, 2);
- function my_product_setup($product_array, $product_id) {
- //Remove Variation Options with inventory count of 0
- foreach ($product_array['variations'] as $key => $variation) {
- $variation_list = preg_split("[\r\n|\r|\n]", $variation['value']);
- if (count($variation_list) > 0) {
- foreach ($variation_list as $var_key => $var_val) {
- $code = get_variation_code($var_val);
- if (!$code) continue;
- if (!check_product_code_inventory($code, $product_array['inventory_levels'])) {
- unset($variation_list[$var_key]);
- }
- }
- $variation['value'] = implode("\n", $variation_list);
- $product_array['variations'][$key] = $variation;
- }
- }
- //Always return the new, complete array
- return $product_array;
- }
- function check_product_code_inventory($code, $inventory_array) {
- if (isset($inventory_array[$code])) {
- if ($inventory_array[$code]['count'] <= 0) {
- return false;
- }
- }
- return true;
- }
- function get_variation_code($source) {
- if (strpos($source,"{") === false) return "";
- //Isolate the Modifiers
- $variation_modifiers = substr($source, strpos($source,"{")+1, strpos($source,"}") - (strpos($source,"{")+1));
- $arr_variation_modifiers = explode("|",$variation_modifiers);
- //Loop Through Each Modifier
- foreach ($arr_variation_modifiers as $individual_modifier) {
- if (strtolower(substr($individual_modifier,0,2)) == "c:") {
- return substr($individual_modifier,2);
- }
- }
- //None Found
- return "";
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement