'field_569406110a6df', 'brand_primary_hover' => 'field_5694548ca61ad', 'brand_primary_hover_active' => 'field_569709e85e9f9', 'brand_primary_hover_link' => 'field_5697060d54d2e', 'background_primary' => 'field_5694253da6ff5', 'background_primary_lighter' => 'field_569424a1385a1', 'background_primary_lightest' => 'field_5694245e385a0', 'validation_error_color' => 'field_569412c7218bf', 'validation_error_bg_color' => 'field_56941341218c0', 'footer_background_color' => 'field_56ebdbe2db848', 'footer_menu_active' => 'field_56ef84c1b236d', 'footer_menu_inactive' => 'field_56ef84f4b236e', 'footer_titles' => 'field_56f094725b74d', 'footer_icons' => 'field_56f0950b5b74e', 'footer_copyrighttext' => 'field_56f097601381a', 'header_menu_active_bg' => 'field_56f0ad3b96f74', 'header_menu_inactive_bg' => 'field_56f0ad7696f75', 'header_menu_active_font' => 'field_56f11f7636613', 'header_menu_inactive_font' => 'field_56f11f13ee237', 'header_background_color' => 'field_56f273352b8f6', 'header_titles' => 'field_56f12879e949f', 'header_description' => 'field_56f128d8e94a0', 'services_title_background' => 'field_56f5264bf8f97', 'services_title_background_active' => 'field_56f52702f8f99', 'services_title_font' => 'field_56f526adf8f98', 'services_title_font_active' => 'field_56f52754f8f9a', 'services_description_background' => 'field_56f52936815b3', 'services_description_font' => 'field_56f52a01815b4', ]; foreach ($color_fields as $field => $field_key) { $field_value = get_field_object($field_key, 'options', true); if ($field_value['default_value'] !== $field_value['value']) { if (strpos($field, 'footer') !== false || strpos($field, 'header') !== false || strpos($field, 'services') !== false ) { switch ($field) { case 'footer_copyrighttext' : case 'footer_titles' : case 'footer_menu_inactive' : { $overridden_css[$field] = str_replace($field_value['default_value'], hex2rgba($field_value['value'], 0.5), $overridden_css[$field]); break; } case 'services_description_background' : { $overridden_css[$field] = str_replace($field_value['default_value'], hex2rgba($field_value['value'], 0.9), $overridden_css[$field]); break; } default : $overridden_css[$field] = str_replace($field_value['default_value'], $field_value['value'], $overridden_css[$field]); } } else { $overridden_css['base'] = str_replace($field_value['default_value'], $field_value['value'], $overridden_css['base']); } if ($field === 'brand_primary') { $brand_primary_color = $field_value['value']; $field_value = get_field_object('field_5697120e6b8f0', 'options', true); $overridden_css['base'] = str_replace($field_value['value'], hex2rgba($brand_primary_color, 0.9), $overridden_css['base']); } } } $option_name = 'color_overrides'; $new_value = implode(' ', $overridden_css); if (get_option($option_name) !== false) { update_option($option_name, $new_value); } else { add_option($option_name, $new_value); } } } add_action('acf/save_post', __NAMESPACE__ . '\\override_colors', 20); function hex2rgba($color, $opacity = false) { $default = 'rgb(0,0,0)'; //Return default if no color provided if(empty($color)) return $default; //Sanitize $color if "#" is provided if ($color[0] == '#' ) { $color = substr( $color, 1 ); } //Check if color has 6 or 3 characters and get values if (strlen($color) == 6) { $hex = array( $color[0] . $color[1], $color[2] . $color[3], $color[4] . $color[5] ); } elseif ( strlen( $color ) == 3 ) { $hex = array( $color[0] . $color[0], $color[1] . $color[1], $color[2] . $color[2] ); } else { return $default; } //Convert hexadec to rgb $rgb = array_map('hexdec', $hex); //Check if opacity is set(rgba or rgb) if($opacity){ if(abs($opacity) > 1) $opacity = 1.0; $output = 'rgba('.implode(",",$rgb).','.$opacity.')'; } else { $output = 'rgb('.implode(",",$rgb).')'; } //Return rgb(a) color string return $output; }?>