WooCommerce Templates in einem Plugin überschreiben

bag 1230527 1920
Bildquelle: Pixabay, diddi4

Benutzerdefinierte WooCommerce-Templates lassen sich einfach in ein Theme auslagern. Doch nicht in allen Fällen hat man selbst die Kontrolle über die Dateien des verwendeten Themes. In diesem Fall können eigene WooCommerce-Templates auch in ein Plugin ausgelagert werden.

Nachfolgende Snippets veranlassen WooCommerce, dort verfügbare modifizierte Templates aus einem Plugin zu beziehen.

define( 'MYPLUGIN_WOO_TEMPATES_DIR', plugin_dir_path( __FILE__ ) . 'templates/' );

function myplugin_woo_template_replace( $located, $template_name, $args, $template_path, $default_path ) {

	if ( file_exists( MYPLUGIN_WOO_TEMPATES_DIR . $template_name ) ) {
		$located = MYPLUGIN_WOO_TEMPATES_DIR . $template_name;
	}
	
	return $located;
}

function myplugin_woo_get_template_part( $template, $slug, $name ) {

	if ( empty( $name ) ) {
		if ( file_exists( MYPLUGIN_WOO_TEMPATES_DIR . "{$slug}.php" ) ) {
			$template = MYPLUGIN_WOO_TEMPATES_DIR . "{$slug}.php";
		}
	} else {
		if ( file_exists( MYPLUGIN_WOO_TEMPATES_DIR . "{$slug}-{$name}.php" ) ) {
			$template = MYPLUGIN_WOO_TEMPATES_DIR . "{$slug}-{$name}.php";
		}
	}	
	return $template;
}
add_filter( 'wc_get_template', 'myplugin_woo_template_replace', 10, 5 );
add_filter( 'wc_get_template_part', 'myplugin_woo_get_template_part', 10, 3 );

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

publicly queryable