Der Beitrag, geschriebem am 20. April 2018, ist schon etwas älter und könnte womöglich nicht mehr aktuell sein
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