get_all_fields(null, true); foreach ($fields as $field) { $value = isset($data[$field['field_key']]) ? $data[$field['field_key']] : ''; // Check conditional logic if (self::should_display_field($field, $data)) { $result = self::validate_field($field, $value); if (is_wp_error($result)) { $errors->add($field['field_key'], $result->get_error_message()); } } } } /** * Check if field should be displayed based on conditional logic */ private static function should_display_field($field, $data) { if (empty($field['conditional_logic'])) { return true; } $logic = $field['conditional_logic']; if (isset($logic['show_if'])) { $condition = $logic['show_if']; $compare_field = $condition['field']; $operator = $condition['operator']; $compare_value = $condition['value']; $current_value = isset($data[$compare_field]) ? $data[$compare_field] : ''; switch ($operator) { case 'equals': return $current_value == $compare_value; case 'not_equals': return $current_value != $compare_value; case 'contains': return strpos($current_value, $compare_value) !== false; default: return true; } } return true; } }