Support

Account

Forum Replies Created

  • Hey James,

    That helped fixed many of the problems.
    The only issue I am having is with it updating on the AJAX calls.
    When I select a new category and then save and reload the page, the correct fields show up, but only on page reload.

    I used Chrome’s inspector to monitor the network calls. Every time a new category is selected (it is a drop-down) then there are two POST calls to admin-ajax.php. Both calls return a 200 status, but the page does not update to show the correct fields, until I save and reload.

    Are there other steps needed to make the AJAX calls update the edit page?

    This is the current state of the code now:

    function acf_location_rules_types_product_category($choices) {
        // create a new group for the rules called Terms
        // if it does not already exist
        if (!isset($choices['Products'])) {
            $choices['Products'] = array();
        }
        // create new rule type in the new group
        $choices['Products']['fr_product_categories'] = 'Category Name';
        return $choices;
    }
    
    function acf_location_rules_values_product_category($choices) {
        // get terms and build choices
        $all_categories = get_terms('fr_product_categories', array('hide_empty' => false, 'childless' => true, 'orderby' => 'name'));
        if(count($all_categories)){
            foreach($all_categories as $category){
                $choices[$category->term_id] = $category->name;
            }
        }
        return $choices;
    }
    
    function acf_location_rules_match_product_category($match, $rule, $options){
    	// validate
       if(!$options['post_id']){return false;}
    	$category = intval(get_post_meta($options['post_id'], 'product_category', true));
    	
    	if($rule['operator'] == "=="){
    		$match = $rule['value'] == $category;
    	}
    	elseif($rule['operator'] == "!="){
    		$match = $rule['value'] != $category;
    	}
    	return $match;
    }
Viewing 1 post (of 1 total)