/** * Wraps content in WooCommerce email template. * * @see https://wpcodebook.com/woocommerce-wrap-email-template-php/ * @see https://github.com/woocommerce/woocommerce/blob/9.2.3/plugins/woocommerce/templates/emails/email-header.php * @see https://github.com/woocommerce/woocommerce/blob/9.2.3/plugins/woocommerce/templates/emails/email-footer.php * @see https://github.com/woocommerce/woocommerce/blob/9.2.3/plugins/woocommerce/includes/class-wc-emails.php#L290 */ function wpcodebook_wrap_in_wc_email_template( $content, $email_heading = '' ) { // Header ob_start(); wc_get_template( 'emails/email-header.php', array( 'email_heading' => $email_heading ) ); $header = ob_get_clean(); // Footer ob_start(); wc_get_template( 'emails/email-footer.php' ); $footer = ob_get_clean(); // Footer placeholders $domain = wp_parse_url( home_url(), PHP_URL_HOST ); $footer = str_replace( array( '{site_title}', '{site_address}', '{site_url}', '{woocommerce}', '{WooCommerce}', ), array( wp_specialchars_decode( get_option( 'blogname' ), ENT_QUOTES ), $domain, $domain, '<a href="https://woocommerce.com">WooCommerce</a>', '<a href="https://woocommerce.com">WooCommerce</a>', ), $footer ); // Result return $header . $content . $footer; }
Usage example:
wc_mail( get_option( 'admin_email' ), esc_html__( 'My awesome subject' ), wpcodebook_wrap_in_wc_email_template( esc_html__( 'My awesome content' ), esc_html__( 'My awesome heading' ) ) );