Add-To-Cart-Template in Nicht-WooCommerce-Template-Datei anzeigen

Als ich letzte Woche die »Pay what you want«-Lösung für meinen Shop umgesetzt habe, musste ich ein wenig basteln um das entsprechende Plugin zum Laufen zu bekommen – ich nutze nämlich nicht die Produkt-Seiten von WooCommerce, sondern binde die Kauf-Option im Single-View eines eigenen Custom Post Types ein. Hier zeige ich, wie ich das Add-To-Cart-Template auf dieser Ansicht nutze.

Die Ausgangslage

Vereinfacht gesagt wurde bisher der Kauf-Button auf meinen Kauf-Theme-Seiten so angezeigt:

<?php
$theme_id = get_field( 'woocommerce-product' );
$theme_product = wc_get_product( $theme_id );
$add_to_cart_url = $theme_product->add_to_cart_url(); ?>
<a class="add-to-cart" href="<?php echo $add_to_cart_url; ?>">
	<?php _e( 'Add to Cart', 'fbn' ); ?>
</a>Code-Sprache: PHP (php)

Ich hole die ID des WooCommerce-Produkts aus einem ACF-Feld, das Produkt-Objekt über wc_get_product() und anschließend die URL, um das Produkt zum Warenkorb hinzuzufügen. Diese URL packe ich anschließend in einen Link – fertig.

Um das Plugin zu nutzen, das den Käufer einen eigenen Preis setzen lässt, ist es am einfachsten, das Add-To-Cart-Template von WooCommerce zu nutzen. Und das lässt sich relativ einfach umsetzen:

/**
 * Setup post data of theme post, so we can
 * get the included WooCommerce template working.
 */
setup_postdata( $theme_id );
wc_get_template( 'single-product/add-to-cart/simple.php' );Code-Sprache: PHP (php)

Damit das eingebundene Template funktioniert, habe ich vorher über setup_postdata() die Beitragsdaten des WooCommerce-Produkts aufgesetzt. In meinem Fall gibt es mit dem nachfolgenden Code keine Probleme – wenn ihr das in einem Loop nutzt, müsst ihr gegebenenfalls danach wp_reset_postdata() nutzen.

Schreibe einen Kommentar

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

Falls du auf diesen Beitrag mit einem Artikel auf deiner eigenen Webseite geantwortet hast, kannst du hier die URL deines Beitrags eingeben. Dabei sollte es sich um die Permalink-URL handeln. Deine Antwort wird dann (möglicherweise nach der Moderation) auf dieser Seite angezeigt. Falls du deine Antwort aktualisieren oder entfernen möchtest, aktualisiere oder lösche deinen Beitrag auf deiner eigenen Webseite und gib die URL des Beitrags erneut ein. (Erfahre mehr über Webmentions.)