2017-10-18 5 views
0

Comment puis-je rediriger les clients WooCommerce vers une page de remerciement spécifique en fonction des produits qu'ils ont achetés? J'ai un produit qui nécessite un formulaire à remplir pour plus d'informations, et je voudrais placer ce formulaire sur une page de remerciement. Le code que j'ai jusqu'ici est ci-dessous, mais c'est juste pour une page générique de remerciement pour tous les produits.WooCommerce Personnalisé Merci redirection basée sur le produit ID

add_action('template_redirect', 'wc_custom_redirect_after_purchase'); 

function wc_custom_redirect_after_purchase() { 
    global $wp; 

    if (is_checkout() && ! empty($wp->query_vars['order-received'])) { 
     wp_redirect('http://www.yoururl.com/your-page/'); 
     exit; 
    } 
} 
+0

vous aurez besoin d'une propriété meta pour enregistrer l'ID de la page personnalisée que vous souhaitez rediriger après l'achat – madalinivascu

+0

Qu'est-ce qui ne fonctionne pas avec votre code? Quelles sont vos exigences. En l'état, je considérerais cette question comme trop large. –

Répondre

-1

Voici un exemple d'une simple page de redirection:

add_action('template_redirect', 'wc_custom_redirect_after_purchase'); 

function bbloomer_redirectcustom($order_id){ 
$order = new WC_Order($order_id); 

$url = 'http://yoursite.com/custom-url'; 

if ($order->status != 'failed') { 
    wp_redirect($url); 
    exit; 
    } 
} 
0

ci-dessous dans cette fonction, vous devrez définir vos identifiants de produits ciblés ou catégories de produits, pour obtenir une redirection personnalisée pour ces éléments lorsque ils sont dans l'ordre:

add_action('template_redirect', 'wc_custom_redirect_after_purchase'); 
function wc_custom_redirect_after_purchase() { 
    if (! is_wc_endpoint_url('order-received')) return; 

    // Define the product IDs in this array 
    $product_ids = array(37, 25, 50); // or an empty array if not used 
    // Define the product categories (can be IDs, slugs or names) 
    $product_categories = array('clothing'); // or an empty array if not used 
    $redirection = false; 

    global $wp; 
    $order_id = intval(str_replace('checkout/order-received/', '', $wp->request)); // Order ID 
    $order = wc_get_order($order_id); // Get an instance of the WC_Order Object 

    // Iterating through order items and finding targeted products 
    foreach($order->get_items() as $item){ 
     if(in_array($item->get_product_id(), $product_ids) || has_term($product_categories, 'product_cat', $item->get_product_id())) { 
      $redirection = true; 
      break; 
     } 
    } 

    // Make the custom redirection when a targeted product has been found in the order 
    if($redirection){ 
     wp_redirect(home_url('/your-page/')); 
     exit; 
    } 
} 

code va dans le fichier function.php de votre thème enfant actif (ou le thème) ou encore dans un fichier de plug-in.

Testé sur WooCommerce 3 et fonctionne.