Ich habe einen E-Commerce mit dem Plugin Woocommerce erstellt. Ich verkaufe nur ein Abonnement, daher ist die "/ cart /" - Seite unbrauchbar. Ich versuche, es loszuwerden. Wenn mein Kunde auf die Schaltfläche "In den Warenkorb" klickt, landet er auf der Checkout-Seite.
sie können einen Filter in functions.php verwenden:
add_filter ('add_to_cart_redirect', 'redirect_to_checkout');
function redirect_to_checkout() {
global $woocommerce;
$checkout_url = $woocommerce->cart->get_checkout_url();
return $checkout_url;
}
es scheint nicht mit ajax zu funktionieren, aber es funktioniert von den einzelnen Produktseiten aus
In den neuesten Versionen von WooCommerce (> = 2.1) kann die Funktion folgendermaßen vereinfacht werden:
function redirect_to_checkout() {
return WC()->cart->get_checkout_url();
}
In den WooCommerce-Einstellungen gibt es eine Option, mit der Sie diese Funktionalität aktivieren können:
Melden Sie sich einfach bei Ihrem WP Admin-Panel> WooCommerce> Katalog an und wählen Sie die Option aus. Ich hoffe das hilft!
Ich habe eine einfache Lösung gefunden, die wie Magie funktioniert.
Das ist es. funktioniert bei mir.
@RemiCorson hat dieses kurze, aber nützliche Tutorial gepostet:
http://www.remicorson.com/woocommerce-skip-product-cart-pages/
Er erwähnt den gleichen Filter wie @Ewout oben,
add_filter ('add_to_cart_redirect', 'redirect_to_checkout'); function redirect_to_checkout() { global $woocommerce; $checkout_url = $woocommerce->cart->get_checkout_url(); return $checkout_url;
}
für mein aktuelles Woocommerce-Projekt ist jedoch eine Codezeile von herausragendem Wert:
Es gibt einen direkten Link, über den ein Benutzer die Produktseite automatisch umgehen kann. http://your-site.com/?add-to-cart=37
'37' wird durch Ihre Produkt-ID ersetzt.
Dies war für mich hilfreich, um unnötige Schritte zu vermeiden und Benutzer direkt zum Checkout von der Homepage und anderen Nicht-Woocommerce-Seiten/Posts zu führen.
Filter add_to_cart_redirect ist in WooCommerce 2.6 veraltet. Verwenden Sie stattdessen woocommerce_add_to_cart_redirect .
Fügen Sie dies zu Ihrer functions.php hinzu:
add_filter ('woocommerce_add_to_cart_redirect', function() {
return WC()->cart->get_checkout_url();
} );
Schritt 1 ... Gehen Sie zuerst zu den WooCommerce-Produkte-Einstellungen und deaktivieren Sie AJAX in den Warenkorb.
Schritt 2. .__ Verwenden Sie woocommerce_add_to_cart_redirect
hook, um eine Weiterleitung an die Kasse vorzunehmen.
add_filter( 'woocommerce_add_to_cart_redirect', function( $url ) {
return wc_get_checkout_url();
});
Natürlich müssen noch einige kleine Dinge erledigt werden, beispielsweise das Ändern des Textes der Schaltflächen in den Einkaufswagen und das Entfernen einiger WooCommerce-Benachrichtigungen zu Warenkörben. Ich empfehle, in diesem Tutorial nach weiteren https://rudrastyh.com/woocommerce/redirect-to-checkout-skip-cart.html zu suchen.
Keine der Lösungen hat tatsächlich für mich funktioniert, der Filter add_to_cart_redirect wurde auf jeder Seite ausgelöst, nicht nur auf dem Warenkorb. Ich habe die vorgeschlagene Antwort geändert.
add_filter ('add_to_cart_redirect', 'redirect_to_checkout');
function redirect_to_checkout() {
if(is_cart()){
$checkout_url = WC()->cart->get_checkout_url();
?>
<script>
location = '<?=$checkout_url?>';
</script>
<?php
}
}
Wenn Sie auf der Shop-Seite Ajax verwenden und zusammen umleiten möchten. Die zweite Methode nur, wenn es einige Bedingungen gibt. Sie können diesen Filter verwenden und die Woocommerce-Einstellung ajax aktiviert lassen:
add_filter('woocommerce_loop_add_to_cart_link', array( $this, 'add_quantity_input' ), 4, 2);
auf einem Klassenattribut ajax_add_to_cart
zu entfernen und den href-Wert in eine Checkout-URL-Seite zu ändern;
Auf meinem Vorlagenfall:
public function add_quantity_input($text = null, $product = null) {
global $product, $woocommerce;
if ( $text != null and $product != null ) {
if(ismycondition($product->id)) {
$s = explode('class="', $text);
$s[2]=str_replace('ajax_add_to_cart', '', $s[2]);
$text = implode('class="', $s);
$text = preg_replace('/<a(.*)href="([^"]*)"(.*)>/','<a$1href="'.$woocommerce->cart->get_checkout_url().'"$3>', $text);
}
}
return $text;
}
Ich hoffe das hilft.