Auf der Suche nach Ideen wie man einzelne Strings oder Wörter in WooCommerce ersetzt, ist am gettext-Filter nicht vorbeizukommen. Das funktioniert soweit auch – für Texte in Templates. Ein Beispiel dafür sieht so aus:
/* *
* Change translated strings
*/
function flxo_woo_gettext_replace( $translated_text, $text='', $domain = '' ) {
$words = array('Shop' => 'Angebot', 'Warenkob' => 'Katalog');
switch( $domain ) {
case 'woocommerce' :
$translated_text = str_replace( array_keys($words), $words, $translated_text );
break;
}
return $translated_text;
}
add_filter( 'gettext', 'flxo_woo_gettext_replace', 30, 3 );
Beharrlich blieb es allerdings dabei, dass „zum Katalog hinzufügen“ eines neuen Elements stets mit {Produktname} wurde zum Warenkorb hinzugefügt quittiert wurde.
Auf der Suche nach den Hintergründen im Quellcode von WooCommerce stieß ich auf die Funktion
/**
* Returns all queued notices, optionally filtered by a notice type.
*
* @since 2.1
* @param string $notice_type Optional. The singular name of the notice type - either error, success or notice.
* @return array|mixed
*/
function wc_get_notices( $notice_type = '' ) {
// ...
}
Es gibt drei Typen von Notices, und jeder Typ hat einen eigenen Filter.
'messages' => array( apply_filters( 'woocommerce_add_' . $notice_type, $message ) ),
So wurde ich den Warenkorb in den Messages los:
/* *
* Change wocommerce messages strings
*/
function flxo_woo_messages_replace( $translated_text ) {
$words = array('Shop' => 'Angebot', 'Warenkob' => 'Katalog');
return str_replace( array_keys($words), $words, $translated_text );
}
add_filter( 'woocommerce_add_success', 'flxo_woo_messages_replace', 30 );
add_filter( 'woocommerce_add_notice', 'flxo_woo_messages_replace', 30 );
add_filter( 'woocommerce_add_error', 'flxo_woo_messages_replace', 30 );
Schreibe einen Kommentar