Anchor link to top of page
catalogs 2754663 1920
Generic filters
Filter by Kategorien

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 );

Bitte Kommentarfunktion nicht für Supportanfragen nutzen. Dem kann hier nicht entsprochen werden. Die Angabe einer E-Mail-Adresse und eines Namens ist nicht erforderlich. Einen (Spitz)-Namen zu nennen wäre aber doch nett.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Hinweis: Sowohl angegebener Name als auch E-Mail-Adresse (beides ist optional, dafür werden alle Kommentare vor Veröffentlichung geprüft) werden dauerhaft gespeichert. Du kannst jeder Zeit die Löschung Deiner Daten oder / und Kommentare einfordern, direkt über dieses Formular (wird nicht veröffentlicht, und im Anschluss gelöscht), und ich werde das umgehend erledigen. – Mit hinterlassenen Kommentaren hinterlegte IP-Adressen werden nach zwei Monaten automatisch gelöscht.