Récupérer $variable et l'injecter dans URL (php)

Résolu

Bonjour,

Sous Wordpress, j'ai un formulaire avec 1 unique champ destiné à vérifier la validité d'un coupon de réduction.
La vérification se fait correctement.
Mon problème est qu'en cas de validité du coupon, je cherche à l'inclure dans une url.

Malgrès mes diverses tentatives je ne parviens pas à générer en php le lien incluant la variable valide ($coupon = XXXX dans cet exemple).

Le Lien que je cherche à obtenir est du type: https://www.monsite.com/XXXX

Voici le code utilisé:

add_shortcode( 'coupon_field', 'display_coupon_field' );
function display_coupon_field() {
//$message = "";
 if( isset($_GET['coupon']) && isset($_GET['redeem-coupon']) ){
$coupon_code = wc_format_coupon_code($_GET['coupon']);
$coupon = new WC_Coupon( $coupon_code );
if ( $coupon->is_valid() ) {
$makeredirection = header("Location: https://www.xxx.com/'. $coupon.' "); (<<<<<< ne fonctionne pas)
 } else {}
$success = __('Le COUPON CODE "%s" est valide! ');
$error   = __("Ce COUPON CODE n'est pas ou plus valide ou a déjà été utilisé!");
$message = isset($makeredirection) && $makeredirection ? $success : $error;
}
$output  = '<div class="cadre-coupon">
<div class="redeem-coupon">
<form id="coupon-redeem">
<h2 style="text-align: center; color: #ff00ff;">Echangez vos COUPONS CODES</h2>
 <input type="text" name="coupon" id="coupon" placeholder="Renseignez ici votre COUPON CODE..."/>
 <input type="submit" class="bouton-coupon" name="redeem-coupon" value="' .__('Récupérer mes avantages!'). '"/>';
return $output . '</form><p>'. $message .'</p></div></div>';
}

Qui aurait la gentillesse de me donner un coup de main sur ce problème? Je ne parviens pas à le résoudre...


Macintosh / Chrome 104.0.0.0

4 réponses

  1. The good solution:

    //******************** REDEEM COUPON WITH URL ********************
     //usage: [coupon_field] or in Php code echo do_shortcode("[coupon_field]"); *//
    add_shortcode('coupon_field', 'display_coupon_field');
    function display_coupon_field() {
        if( isset($_GET['coupon']) && isset($_GET['redeem-coupon']) ){
            if( $coupon = esc_attr($_GET['coupon']) ) {
                //$applied = WC()->cart->apply_coupon($coupon);
                $makerredirection = header("Location: https://www.domain.ltd/". $coupon);
            } else {
                $coupon = false;
            }

            $success = sprintf( __('The COUPON CODE "%s" is valid! Validate your basket for free to recover your free product!'), $coupon );
            $error = __("This COUPON CODE is not or no longer valid or has already been used!");
    $message = isset($makerredirection) && $makerredirection? $success: $error;
            
        }

        $output = '<div class="coupon-frame"><div class="redeem-coupon"><form id="coupon-redeem">
                <h2 style="text-align: center; color: #ff00ff;">Redeem your COUPON CODES to get your FREE product!</h2>
        <p><input type="text" name="coupon" id="coupon" placeholder="Enter your COUPON CODE here..."/>
        <input type="submit" name="redeem-coupon" value="'.__('Recover my FREE Product or Discount!').'" /></p>';

        $output .= isset($coupon) ? '<p class="result">'.$message.'</p>': '';

        return $output. '</form></div></div>';
    }

    Si cela peut aider quelqu'un dans ce même besoin

    1. Re bonjour,

      non il me semble qu'il s'agisse de la bonne variable...

      Peut-être une extension php / module à activer?

      1. Modérateur

        la variable coupon semble être un objet avec pleins de trucs dedans.. je doutes que tu veuilles passer cet objet intégralement dans une url ..

    2. Bonjour Jordan,

      Merci pour votre réponse.

      J'ai modifié le code comme mentionné. Mais j'obtien une URL du type "https://www.xxx.com/%7B%22id%22:91731,%22code%22:%22adlr-mmmp-z4hh%22,%22amount%22:%22100%22,%22status%22:%22publish%22,%22date_created%22:%7B%22date%22:%222022-04-26%2009:20:47.000000%22,%22timezone_type%22:1,%22timezone%22:%22+00:00%22%7D,%22date_modified%22:%7B%22date%22:%222022-09-05%2014:20:00.000000%22,%22timezone_type%22:1,%22timezone%22:%22+00:00%22%7D,%22date_expires%22:null,%22discount_type%22:%22percent%22,%22description%22:%22Ce%20COUPON%20CODE%20vous%20permet%20d//'obtenir%20gratuitement%20un%20Pack%20de%2025%20CBJ!%20F/u00e9licitations!%22,%22usage_count%22:0,%22individual_use%22:true,%22product_ids%22:[],%22excluded_product_ids%22:[],%22usage_limit%22:0,%22usage_limit_per_user%22:1000,%22limit_usage_to_x_items%22:null,%22free_shipping%22:false,%22product_categories%22:[],%22excluded_product_categories%22:[],%22exclude_sale_items%22:true,%22minimum_amount%22:%22%22,%22maximum_amount%22:%22%22,%22email_restrictions%22:[],%22used_by%22:[],%22virtual%22:false,%22meta_data%22:[%7B%22id%22:448442,%22key%22:%22_wt_free_product_ids%22,%22value%22:%2284755%22%7D,%7B%22id%22:448443,%22key%22:%22wt_apply_discount_before_tax_calculation%22,%22value%22:%220%22%7D,%7B%22id%22:448444,%22key%22:%22_wt_product_discount_amount%22,%22value%22:%22100%22%7D,%7B%22id%22:448445,%22key%22:%22_wt_product_discount_type%22,%22value%22:%22percent%22%7D,%7B%22id%22:448446,%22key%22:%22_wt_product_discount_quantity%22,%22value%22:%221%22%7D,%7B%22id%22:448447,%22key%22:%22wt_nth_order_no_of_orders%22,%22value%22:%220%22%7D,%7B%22id%22:448448,%22key%22:%22nth_coupon_no_of_coupon_condition%22,%22value%22:%22please_select%22%7D,%7B%22id%22:448449,%22key%22:%22wt_order_Status_need_to_count%22,%22value%22:[]%7D,%7B%22id%22:448450,%22key%22:%22wt_nth_order_order_total%22,%22value%22:%22%22%7D,%7B%22id%22:448451,%22key%22:%22nth_coupon_exclude_already_awarded%22,%22value%22:%22%22%7D,%7B%22id%22:448452,%22key%22:%22_wt_sc_shipping_methods%22,%22value%22:%22%22%7D,%7B%22id%22:448453,%22key%22:%22_wt_sc_payment_methods%22,%22value%22:%22%22%7D,%7B%22id%22:448454,%22key%22:%22_wt_need_check_location_in%22,%22value%22:%22billing%22%7D,%7B%22id%22:448455,%22key%22:%22_wt_coupon_available_location%22,%22value%22:%22%22%7D,%7B%22id%22:448456,%22key%22:%22_wt_sc_user_roles%22,%22value%22:%22%22%7D,%7B%22id%22:448457,%22key%22:%22_wt_category_condition%22,%22value%22:%22or%22%7D,%7B%22id%22:448458,%22key%22:%22_wt_product_condition%22,%22value%22:%22or%22%7D,%7B%22id%22:448459,%22key%22:%22_wt_min_matching_product_qty%22,%22value%22:%22%22%7D,%7B%22id%22:448460,%22key%22:%22_wt_max_matching_product_qty%22,%22value%22:%22%22%7D,%7B%22id%22:448461,%22key%22:%22_wt_min_matching_product_subtotal%22,%22value%22:%22%22%7D,%7B%22id%22:448462,%22key%22:%22_wt_max_matching_product_subtotal%22,%22value%22:%22%22%7D,%7B%22id%22:448463,%22key%22:%22_wc_make_coupon_available%22,%22value%22:%22%22%7D,%7B%22id%22:448464,%22key%22:%22_wt_make_coupon_available_in_myaccount%22,%22value%22:%22%22%7D,%7B%22id%22:448465,%22key%22:%22_wt_coupon_unique_url%22,%22value%22:%22adlr-mmmp-z4hh%22%7D,%7B%22id%22:448466,%22key%22:%22_wt_auto_product_to_cart%22,%22value%22:%2284755%22%7D,%7B%22id%22:448467,%22key%22:%22_wt_url_coupon_page_to_redirect%22,%22value%22:%22%22%7D,%7B%22id%22:448468,%22key%22:%22_wt_url_coupon_page_to_redirect_as%22,%22value%22:%22page%22%7D,%7B%22id%22:448470,%22key%22:%22armaffiliate_coupon_affiliate%22,%22value%22:%220%22%7D,%7B%22id%22:448472,%22key%22:%22_wt_max_discount%22,%22value%22:%22%22%7D,%7B%22id%22:448473,%22key%22:%22items_mandatory%22,%22value%22:%22no%22%7D,%7B%22id%22:448474,%22key%22:%22_wjecf_products_and%22,%22value%22:%22no%22%7D,%7B%22id%22:448475,%22key%22:%22_wjecf_categories_and%22,%22value%22:%22no%22%7D,%7B%22id%22:448476,%22key%22:%22_wjecf_is_auto_coupon%22,%22value%22:%22yes%22%7D,%7B%22id%22:448477,%22key%22:%22_wjecf_apply_silently%22,%22value%22:%22no%22%7D,%7B%22id%22:448478,%22key%22:%22_wt_make_auto_coupon%22,%22value%22:%22%22%7D,%7B%22id%22:448479,%22key%22:%22_wt_coupon_start_date%22,%22value%22:%222022-09-01%22%7D,%7B%22id%22:448480,%22key%22:%22_wt_coupon_start_date_timestamp%22,%22value%22:%221661986800%22%7D,%7B%22id%22:448481,%22key%22:%22_wt_coupon_enable_days%22,%22value%22:%22%22%7D,%7B%22id%22:448482,%22key%22:%22_wt_coupon_expiry_in_days%22,%22value%22:%22365%22%7D,%7B%22id%22:448483,%22key%22:%22cwp_meta_box_check%22,%22value%22:%22No%22%7D,%7B%22id%22:449505,%22key%22:%22dfiFeatured%22,%22value%22:[%22%22]%7D,%7B%22id%22:453207,%22key%22:%22_wcs_number_payments%22,%22value%22:%22%22%7D]%7D

      Avec en réponse une page "Forbiden / Nginx" 

      Serait-ce un problème de version php ? (j'utilise la 7.4) ou un problème de urlencode() ?

      Je sèche...

      1. Ha non version php 8.0.22

      2. Modérateur
        @jemo360

        C'est peut-être la variable utilisée qui n'est pas la bonne..

        Pourquoi ne pas utiliser $coupon_code  au lieu de $coupon ?

    3. Modérateur

      Bonjour,

      $makeredirection = header("Location: https://www.xxx.com/". $coupon);