Skip Navigation

Open

Topic Tags: Compatibility

Overview of the issue

When using WCFM – Multivendor Marketplace for WooCommerce and its add-on WooCommerce Multivendor Membership, verification code emails sent in secondary languages inherit RTL alignment if the default language is RTL (Right to Left). This occurs even if the secondary language is LTR (Left to Right).

Workaround

Please, make sure of having a full site backup of your site before proceeding.

  • Open …/wp-content/plugins/wc-multivendor-membership/views/emails/email-verification.php
  • Look for line 16
  • Replace:
    do_action( 'woocommerce_email_header', $email_heading, $email );
    ?>
    
  • With:
    // Workaround for compsupp-7719
    // Switch language context
    if( apply_filters( 'wcfm_allow_wpml_email_translation', true ) ) {
    	do_action('wpml_switch_language_for_email', $user_email);
    }
    
    ?>
    <!DOCTYPE html>
    <html <?php language_attributes(); ?>>
    	<head>
    		<meta http-equiv="Content-Type" content="text/html; charset=<?php bloginfo( 'charset' ); ?>" />
    		<meta content="width=device-width, initial-scale=1.0" name="viewport">
    		<title><?php echo get_bloginfo( 'name', 'display' ); ?></title>
    	</head>
    	<body <?php echo is_rtl() ? 'rightmargin' : 'leftmargin'; ?>="0" marginwidth="0" topmargin="0" marginheight="0" offset="0">
    		<table width="100%" id="outer_wrapper">
    			<tr>
    				<td><!-- Deliberately empty to support consistent sizing and layout across multiple email clients. --></td>
    				<td width="600">
    					<div id="wrapper" dir="<?php echo is_rtl() ? 'rtl' : 'ltr'; ?>">
    						<table border="0" cellpadding="0" cellspacing="0" height="100%" width="100%">
    							<tr>
    								<td align="center" valign="top">
    									<div id="template_header_image">
    										<?php
    										$img = get_option( 'woocommerce_email_header_image' );
    
    										if ( $img ) {
    											echo '<p style="margin-top:0;"><img src="' . esc_url( $img ) . '" alt="' . esc_attr( get_bloginfo( 'name', 'display' ) ) . '" /></p>';
    										}
    										?>
    									</div>
    									<table border="0" cellpadding="0" cellspacing="0" width="100%" id="template_container">
    										<tr>
    											<td align="center" valign="top">
    												<!-- Header -->
    												<table border="0" cellpadding="0" cellspacing="0" width="100%" id="template_header">
    													<tr>
    														<td id="header_wrapper" >
    															<h1 style="text-align: <?php echo is_rtl() ? 'right' : 'left'; ?>"><?php echo esc_html( $email_heading ); ?></h1>
    														</td>
    													</tr>
    												</table>
    												<!-- End Header -->
    											</td>
    										</tr>
    										<tr>
    											<td align="center" valign="top">
    												<!-- Body -->
    												<table border="0" cellpadding="0" cellspacing="0" width="100%" id="template_body">
    													<tr>
    														<td valign="top" id="body_content">
    															<!-- Content -->
    															<table border="0" cellpadding="20" cellspacing="0" width="100%">
    																<tr>
    																	<td valign="top">
    																		<div id="body_content_inner" style="text-align: <?php echo is_rtl() ? 'right' : 'left'; ?>">
    
  • And add the following code at the end of the file (around line 88)
    <?php
    // switch language back
    	if( apply_filters( 'wcfm_allow_wpml_email_translation', true ) ) {
    		do_action('wpml_restore_language_from_email');
    	}
    ?>
    

Leave a Reply

Please stay on topic and be respectful to others. If you need help with issues not related to this post, use our Support Forum to start a chat or submit a ticket.

You can use these tags:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>