How to have conditional facets in WP Gridbuilder

This code will get the value from a specific facet, then if the currently loading facet doesn’t appear in an array of facet IDs then it won’t display. The code runs when each facet is displayed, rather than the whole facet ‘group’. If nothing has been selected in the initial facet, then it will load that initial facet.

add_filter(
	'wp_grid_builder/facet/html',
	function( $html, $facet_id ) {

		$query_strings = wpgb_get_query_string();
		$selected_values = wpgb_get_selected_facet_values( $query_strings );
		$is_selected = !empty( $query_strings['area_of_expertise'] );
		
		$is_selected_value = htmlspecialchars($_GET["_area_of_expertise"]);

		$stats_fields = array(9, 10, 3, 20);
		$clinical_research_fields = array(9, 10, 3, 12, 13, 14, 15, 16);
		$data_management_fields = array(9, 10, 3, 17, 18, 19);
		$regulatory_clinical_fields = array(9, 10, 3, 21, 22, 23);
		$medical_writing_fields = array(9, 10, 3, 21, 22, 23);
		$pharma_fields = array(9, 10, 3, 22, 25, 26, 27);
		$quality_fields = array(9, 10, 3, 21, 22, 23);
		$laboratory_scientists_fields = array(9, 10, 3, 21, 22, 23);
		$medical_writing_fields = array(9, 10, 3, 21, 22, 23);
		$analytical_development_stability = array(9, 10, 3, 21, 22, 23);
		$ceos = array(9, 10, 3, 21, 22, 23);
		$chemistry_manufacturing_controls_pq_cmc = array(9, 10, 3, 21, 22, 23);
		$engineers = array(9, 10, 3, 21, 22, 23);
		$investors = array(9, 10, 3, 21, 22, 23);
		$project_programme_management = array(9, 10, 3, 21, 22, 23);
		$translators = array(9, 10, 3, 21, 22, 28, 23);
		$initial_load = array(9);

		// This will hide a facet depending on area of expertise
		if ( $is_selected_value == 'statistics' && !in_array( $facet_id, $stats_fields, true ) ) {
			$html = '';
		} elseif ( $is_selected_value == 'clinical-research' && !in_array( $facet_id, $clinical_research_fields, true ) ) {
			$html = '';
		} elseif ( $is_selected_value == 'regulatory' && !in_array( $facet_id, $regulatory_clinical_fields, true ) ) {
			$html = '';
		} elseif ( $is_selected_value == 'data-management' && !in_array( $facet_id, $data_management_fields, true ) ) {
			$html = '';
		} elseif ( $is_selected_value == 'medical-writing' && !in_array( $facet_id, $medical_writing_fields, true ) ) {
			$html = '';
		} elseif ( $is_selected_value == 'pharmacovigilance' && !in_array( $facet_id, $pharma_fields, true ) ) {
			$html = '';
		} elseif ( $is_selected_value == 'quality' && !in_array( $facet_id, $quality_fields, true ) ) {
			$html = '';
		} elseif ( $is_selected_value == 'laboratory-scientists' && !in_array( $facet_id, $laboratory_scientists_fields, true ) ) {
			$html = '';
		} elseif ( $is_selected_value == 'analytical-development%2Fstability' && !in_array( $facet_id, $analytical_development_stability, true ) ) {
			$html = '';
		} elseif ( $is_selected_value == 'ceos' && !in_array( $facet_id, $ceos, true ) ) {
			$html = '';
		} elseif ( $is_selected_value == 'chemistry-manufacturing-controls-(pq%2Fcmc)' && !in_array( $facet_id, $chemistry_manufacturing_controls_pq_cmc, true ) ) {
			$html = '';
		} elseif ( $is_selected_value == 'engineers' && !in_array( $facet_id, $engineers, true ) ) {
			$html = '';
		} elseif ( $is_selected_value == 'investors' && !in_array( $facet_id, $investors, true ) ) {
			$html = '';
		} elseif ( $is_selected_value == 'project/programme-management' && !in_array( $facet_id, $project_programme_management, true ) ) {
			$html = '';
		} elseif ( $is_selected_value == 'translators' && !in_array( $facet_id, $translators, true ) ) {
			$html = '';
		} elseif ( !$is_selected_value && !in_array( $facet_id, $initial_load, true ) ) {
			$html = '';
		}

		return $html;

	},
	10,
	2
);