Zum Inhalt springen Zur Seitenleiste springen

Waiting for author

Topic Tags: Compatibility

Overview of the issue

When using Kadence WC Email Designer with WPML, you might experience an issue where placeholders such as {site_title}, {site_address}, and {site_url} are not replaced in translated emails when they are inserted inside the email body text. These placeholders continue to work correctly in the default WooCommerce header or additional notes fields.

Workaround

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

  • Open the …/wp-content/plugins/kadence-woocommerce-email-designer/kadence-woocommerce-email-designer.php file.
  • Look for line 375.
  • Replace:
    $body_text = str_replace( '{site_title}', get_bloginfo( 'name', 'display' ), $body_text );
    $body_text = str_replace( '{site_address}', wp_parse_url( home_url(), PHP_URL_HOST ), $body_text );
    $body_text = str_replace( '{site_url}', wp_parse_url( home_url(), PHP_URL_HOST ), $body_text );
    
    if ( $order ) {
    	if ( 0 === ( $user_id = (int) $order->get_customer_id() ) ) {
    		$user_id = 'guest';
    	}
    	if ( class_exists( 'WCML_Orders' ) ) {
    		$order_language = WCML_Orders::getLanguage( $order->get_id() );
    		if ( $order_language ) {
    			$language_code = $order_language;
    			$name   = '[kt_woomail]' . $setting_key;
    			$body_text = apply_filters( 'wpml_translate_single_string', $body_text, 'admin_texts_kt_woomail', $name, $order_language );
    		}
    	}
    	// Check for placeholders.
    	$body_text = str_replace( '{order_date}', wc_format_datetime( $order->get_date_created() ), $body_text );
    	$body_text = str_replace( '{order_number}', $order->get_order_number(), $body_text );
    	$body_text = str_replace( '{customer_first_name}', $order->get_billing_first_name(), $body_text );
    	$body_text = str_replace( '{customer_last_name}', $order->get_billing_last_name(), $body_text );
    	$body_text = str_replace( '{customer_full_name}', $order->get_formatted_billing_full_name(), $body_text );
    	$body_text = str_replace( '{customer_company}', $order->get_billing_company(), $body_text );
    	$body_text = str_replace( '{customer_email}', $order->get_billing_email(), $body_text );
    	$body_text = str_replace( '{customer_username}', self::get_username_from_id( $user_id ), $body_text );
    }
    
    $body_text = apply_filters( 'kadence_woomail_order_body_text', $body_text, $order, $sent_to_admin, $plain_text, $email );
            
  • With:
    // Moved from here
    
    if ( $order ) {
    	if ( 0 === ( $user_id = (int) $order->get_customer_id() ) ) {
    		$user_id = 'guest';
    	}
    	if ( class_exists( 'WCML_Orders' ) ) {
    		$order_language = WCML_Orders::getLanguage( $order->get_id() );
    		if ( $order_language ) {
    			$language_code = $order_language;
    			$name   = '[kt_woomail]' . $setting_key;
    			$body_text = apply_filters( 'wpml_translate_single_string', $body_text, 'admin_texts_kt_woomail', $name, $order_language );
    		}
    	}
    	// Check for placeholders.
    	$body_text = str_replace( '{order_date}', wc_format_datetime( $order->get_date_created() ), $body_text );
    	$body_text = str_replace( '{order_number}', $order->get_order_number(), $body_text );
    	$body_text = str_replace( '{customer_first_name}', $order->get_billing_first_name(), $body_text );
    	$body_text = str_replace( '{customer_last_name}', $order->get_billing_last_name(), $body_text );
    	$body_text = str_replace( '{customer_full_name}', $order->get_formatted_billing_full_name(), $body_text );
    	$body_text = str_replace( '{customer_company}', $order->get_billing_company(), $body_text );
    	$body_text = str_replace( '{customer_email}', $order->get_billing_email(), $body_text );
    	$body_text = str_replace( '{customer_username}', self::get_username_from_id( $user_id ), $body_text );
    }
    
    // To here
    $body_text = str_replace( '{site_title}', get_bloginfo( 'name', 'display' ), $body_text );
    $body_text = str_replace( '{site_address}', wp_parse_url( home_url(), PHP_URL_HOST ), $body_text );
    $body_text = str_replace( '{site_url}', wp_parse_url( home_url(), PHP_URL_HOST ), $body_text );
    
    $body_text = apply_filters( 'kadence_woomail_order_body_text', $body_text, $order, $sent_to_admin, $plain_text, $email );
            

Hinterlasse eine Antwort

Bitte bleibe beim Thema und sei respektvoll zu anderen. Wenn du Hilfe bei Problemen benötigst, die nicht mit diesem Beitrag zusammenhängen, nutze unser Support-Forum, um einen Chat zu starten oder ein Ticket einzureichen.

Du kannst diese Tags verwenden:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>