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.