fix: Email rendering - newlines, hero text color, and card borders
🐛 Three Critical Email Issues Fixed: 1. Newlines Not Working ❌ "Order Number: #359 Order Total: Rp129.000" on same line ✅ Fixed by adding <br> for line continuations in paragraphs Key change in MarkdownParser.php: - Accumulate paragraph content with <br> between lines - Match TypeScript behavior exactly - Protect variables from markdown parsing Before: $paragraph_content = $trimmed; After: if ($paragraph_content) { $paragraph_content .= '<br>' . $trimmed; } else { $paragraph_content = $trimmed; } 2. Hero Card Text Color ❌ Heading black instead of white in Gmail ✅ Add inline color styles to all headings/paragraphs Problem: Gmail doesn't inherit color from parent Solution: Add style="color: white;" to each element $content = preg_replace( '/<(h[1-6]|p)([^>]*)>/', '<$1$2 style="color: ' . $hero_text_color . ';">', $content ); 3. Blue Border on Cards ❌ Unwanted blue border in Gmail (screenshot 2) ✅ Removed borders from .card-info, .card-warning, .card-success Problem: CSS template had borders Solution: Removed border declarations Before: .card-info { border: 1px solid #0071e3; } After: .card-info { background-color: #f0f7ff; } �� Additional Improvements: - Variable protection during markdown parsing - Don't match bold/italic across newlines - Proper list handling - Block-level tag detection - Paragraph accumulation with line breaks 🎯 Result: - ✅ Proper line breaks in paragraphs - ✅ White text in hero cards (Gmail compatible) - ✅ No unwanted borders - ✅ Variables preserved during parsing - ✅ Professional email appearance Test: Create order, check email - should now show: - Order Number: #359 - Order Total: Rp129.000 - Estimated Delivery: 3-5 business days (Each on separate line with proper spacing)
This commit is contained in:
@@ -311,6 +311,13 @@ class EmailRenderer {
|
||||
esc_attr($hero_gradient_end)
|
||||
);
|
||||
$content_style .= sprintf(' color: %s;', esc_attr($hero_text_color));
|
||||
|
||||
// Add inline color to all headings and paragraphs for email client compatibility
|
||||
$content = preg_replace(
|
||||
'/<(h[1-6]|p)([^>]*)>/',
|
||||
'<$1$2 style="color: ' . esc_attr($hero_text_color) . ';">',
|
||||
$content
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user