J'ai créé un commerce électronique en utilisant le plugin woocommerce. Je vends uniquement un abonnement, la page "/ cart /" est donc inutile. J'essaie de m'en débarrasser pour que lorsque mon client clique sur le bouton "Ajouter au panier", il se retrouve sur la page de paiement.
vous pouvez utiliser un filtre dans functions.php:
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;
}
cela ne semble pas fonctionner avec ajax, mais cela fonctionne à partir des pages de produit unique, ce que je pense être ce que vous utilisez
Sur les dernières versions de WooCommerce (> = 2.1), la fonction peut être simplifiée de la manière suivante:
function redirect_to_checkout() {
return WC()->cart->get_checkout_url();
}
Une option dans les paramètres de WooCommerce vous permet d’activer cette fonctionnalité:
Connectez-vous simplement à votre WP panneau d'administration> WooCommerce> et sélectionnez l'option. J'espère que ça aide!
J'ai trouvé une solution simple qui fonctionne comme par magie.
C'est tout. travaille pour moi.
@RemiCorson a publié ce bref mais utile tutoriel:
http://www.remicorson.com/woocommerce-skip-product-cart-pages/
Il mentionne le même filtre que @Ewout ci-dessus,
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;
}
mais une ligne de code ressort et est extrêmement utile pour mon projet de commerce en cours:
Il existe un lien direct qu'un utilisateur peut utiliser pour contourner automatiquement la page du produit . http://votre-site.com/?add-to-cart=37
"37" sera remplacé par votre identifiant de produit.
Cela m'a été utile pour éliminer les étapes inutiles et amener les utilisateurs directement à la caisse depuis la page d'accueil et vers d'autres pages/publications non-woocommerce.
Filtre add_to_cart_redirect est obsolète dans WooCommerce 2.6. Utilisez woocommerce_add_to_cart_redirect à la place.
Ajoutez ceci à votre functions.php:
add_filter ('woocommerce_add_to_cart_redirect', function() {
return WC()->cart->get_checkout_url();
} );
Étape 1 . Tout d’abord, allez dans les paramètres des produits WooCommerce et désactivez AJAX ajouter au panier.
Étape 2. Utilisez le crochet woocommerce_add_to_cart_redirect
pour effectuer une redirection vers la caisse.
add_filter( 'woocommerce_add_to_cart_redirect', function( $url ) {
return wc_get_checkout_url();
});
Bien sûr, il reste quelques petites choses à faire, telles que modifier le texte des boutons d’ajout au panier et supprimer certaines notifications relatives au panier WooCommerce. Je recommande de vérifier ce tutoriel pour plus https://rudrastyh.com/woocommerce/redirect-to-checkout-skip-cart.html
Aucune des solutions n'a vraiment fonctionné pour moi, le filtre add_to_cart_redirect s'est déclenché à chaque page, pas seulement sur le panier. J'ai apporté quelques modifications à la réponse suggérée.
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
}
}
Sur la page de la boutique, si vous souhaitez utiliser ajax et rediriger vers l’ensemble. La seconde méthode ne peut être utilisée qu’en présence d’une condition. Vous pouvez utiliser ce filtre et laisser le paramètre WoCommerce ajax activé:
add_filter('woocommerce_loop_add_to_cart_link', array( $this, 'add_quantity_input' ), 4, 2);
supprimer sur un attribut de classe ajax_add_to_cart
et modifier la valeur href en extraire la page d'URL;
Sur mon cas de modèle:
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;
}
J'espère que cela aide.