WooCommerce obsahuje nastavení, které umožňuje vložit do patičky každého e-mailu vlastní text. Ten je společný pro všechny e-maily. Pomocí kódu budeme upravovat text podle toho, jakou uživatelskou roli má uživatel.
WooCommerce má vlastní nastavení pro všechny e-maily:
Protože je stejný pro každý e-mail, budeme jej měnit dynamicky.
Řekněme, že máte na e-shopu různé uživatelské úrovně a chcete pro ně personalizovat text v patičce. Obdobně to může fungovat, i když budete mít tzv. multivendor e-shop.
Použijeme filter woocommerce_email_footer_text a pomocí získané role, upravíme text v patičce e-mailu.
Bohužel, tento filter má problém v tom, že přijímá pouze hodnotu nastavení. Proto musíme nejprve vytvořit vlastní globální proměnou, do níž vložíme id objednávky:
add_action( 'woocommerce_email_before_order_table', 'musilda_email_order_id_as_a_global', 1, 1 );
function musilda_email_order_id_as_a_global( $order ){
$GLOBALS['order_id_str'] = $order->get_id();
}
Tím jsme získali přístup k id objednávky i v příslušném filteru a můžeme napsat funkci:
add_action( 'woocommerce_email_footer_text', 'custom_email_footer_text', 10, 1 );
function custom_email_footer_text( $footer_text ){
if ( !empty( $GLOBALS['order_id_str'] ) ) {
$order_id = (int)$GLOBALS['order_id_str'];
$order = wc_get_order( $order_id );
$customer_id = $order->get_customer_id();
$user_data = get_userdata( $customer_id );
if ( in_array( 'wholesale_customer', $user_data->roles ) ) {
$footer_text = __( 'Text v patičce e-mailu pro odběratele', 'musilda' );
}
}
return $footer_text;
}
Díky uživatelské roli se pak bude zobrazovat v patičce odlišný text.