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

To respond on your own website, enter the URL of your response which should contain a link to this post's permalink URL. Your response will then appear (possibly after moderation) on this page. Want to update or remove your response? Update or delete your post and re-enter your post's URL again. (Find out more about Webmentions.)