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>

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

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.

Das könnte auch interessant sein

Schreib einen Kommentar

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