web-dev-qa-db-fra.com

Woocommerce bouton ajouter au panier rediriger vers la caisse

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.

24
Michael Villeneuve

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();
}
62
Ewout

Une option dans les paramètres de WooCommerce vous permet d’activer cette fonctionnalité:

Option to redirect visitor to cart page

Connectez-vous simplement à votre WP panneau d'administration> WooCommerce> et sélectionnez l'option. J'espère que ça aide!

11
Devin Walker

J'ai trouvé une solution simple qui fonctionne comme par magie.

  1. Comme mentionné par @Ewout, cochez la case "Rediriger vers la page du panier après l'ajout réussi".
  2. Woocommerce> Paramètres> Paiement (Onglet) - où vous devez sélectionner des pages pour le panier et le paiement, sélectionnez la page de paiement comme page de panier (image jointe).

C'est tout. travaille pour moi.enter image description here

10
Shir Gans

@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.

3
ATutorMe

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();
} );
1
Christian Lescuyer

Mise à jour pour WooCommerce 3.5.1

É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

0
Misha Rudrastyh

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 
  }
}
0
nikksan

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.

0
jedi