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