diff --git a/includes/class-newspack-newsletters-renderer.php b/includes/class-newspack-newsletters-renderer.php
index 74457408f..0887a15d6 100644
--- a/includes/class-newspack-newsletters-renderer.php
+++ b/includes/class-newspack-newsletters-renderer.php
@@ -163,9 +163,10 @@ function ( $key ) use ( &$attrs ) {
* @param WP_Block $block The block.
* @param bool $is_in_column Whether the component is a child of a column component.
* @param bool $is_in_group Whether the component is a child of a group component.
+ * @param array $default_attrs Default attributes for the component.
* @return string MJML component.
*/
- private static function render_mjml_component( $block, $is_in_column = false, $is_in_group = false ) {
+ private static function render_mjml_component( $block, $is_in_column = false, $is_in_group = false, $default_attrs = [] ) {
$block_name = $block['blockName'];
$attrs = $block['attrs'];
$inner_blocks = $block['innerBlocks'];
@@ -176,7 +177,7 @@ private static function render_mjml_component( $block, $is_in_column = false, $i
}
$block_mjml_markup = '';
- $attrs = self::process_attributes( $attrs );
+ $attrs = self::process_attributes( array_merge( $default_attrs, $attrs ) );
// Default attributes for the section which will envelop the mj-column.
$section_attrs = array_merge(
@@ -414,7 +415,7 @@ private static function render_mjml_component( $block, $is_in_column = false, $i
$markup = '';
foreach ( $inner_blocks as $block ) {
- $markup .= self::render_mjml_component( $block, true );
+ $markup .= self::render_mjml_component( $block, true, false, $default_attrs );
}
$block_mjml_markup = $markup . '';
break;
@@ -423,9 +424,12 @@ private static function render_mjml_component( $block, $is_in_column = false, $i
* Columns block.
*/
case 'core/columns':
+ if ( isset( $attrs['color'] ) ) {
+ $default_attrs['color'] = $attrs['color'];
+ }
$markup = '';
foreach ( $inner_blocks as $block ) {
- $markup .= self::render_mjml_component( $block, true );
+ $markup .= self::render_mjml_component( $block, true, false, $default_attrs );
}
$block_mjml_markup = $markup;
break;
@@ -445,9 +449,14 @@ private static function render_mjml_component( $block, $is_in_column = false, $i
* Group block.
*/
case 'core/group':
+ // There's no color attribute on mj-wrapper, so it has to be passed to children.
+ // https://github.com/mjmlio/mjml/issues/1881 .
+ if ( isset( $attrs['color'] ) ) {
+ $default_attrs['color'] = $attrs['color'];
+ }
$markup = '';
foreach ( $inner_blocks as $block ) {
- $markup .= self::render_mjml_component( $block, false, true );
+ $markup .= self::render_mjml_component( $block, false, true, $default_attrs );
}
$block_mjml_markup = $markup . '';
break;