Je souhaite que le code suivant (ou quelque chose de similaire) ne s'applique que si la géolocalisation des clients provient du Royaume-Uni? J'ai essayé plusieurs options différentes, mais je n'ai pas pu le faire fonctionner lorsque je testais depuis un autre pays.


function free_shipping_cart_notice() {

    $min_amount = 30;

    // Subtotal inc. Tax excl. Shipping
    $current = WC()->cart->subtotal;

    if ( $current < $min_amount ) {
        $added_text = esc_html__('You will have FREE shipping if you add ', 'woocommerce' ) . wc_price( $min_amount - $current ) . esc_html__(' more in your order!', 'woocommerce' );
        $return_to = apply_filters( 'woocommerce_continue_shopping_redirect', wc_get_raw_referer() ? wp_validate_redirect( wc_get_raw_referer(), false ) : wc_get_page_permalink( 'shop' ) );
        $notice = sprintf( '<a href="%s" class="button wc-forward">%s</a> %s', esc_url( $return_to ), esc_html__( 'Continue Shopping', 'woocommerce' ), $added_text );
        wc_print_notice( $notice, 'notice' );
    } else {
        wc_print_notice( 'Congrats! You have free shipping with more than £30 in your order', 'notice' );
    }

}
add_action( 'woocommerce_before_cart', 'free_shipping_cart_notice' );

0
Mike Devitt 3 nov. 2019 à 14:07

1 réponse

Ok, j'ai essayé une autre méthode et ça a fonctionné.

//free shipping qualification UK only
add_action( 'woocommerce_before_cart', 'md_free_shipping_cart_notice' );

function md_free_shipping_cart_notice() {
    $threshold = 25;
    $current = WC()->cart->subtotal;
    $billing_country = WC()->customer->get_billing_country();
    if ( $current < $threshold && WC()->customer->get_billing_country() == 'GB' ) {
        $added_text = esc_html__('You will have FREE shipping if you add ', 'woocommerce' ) . wc_price( $threshold - $current ) . esc_html__(' more in your order!', 'woocommerce' );
        $return_to = apply_filters( 'woocommerce_continue_shopping_redirect', wc_get_raw_referer() ? wp_validate_redirect( wc_get_raw_referer(), false ) : wc_get_page_permalink( 'shop' ) );
        $notice = sprintf( '<a href="%s" class="button wc-forward">%s</a> %s', esc_url( $return_to ), esc_html__( 'Continue Shopping', 'woocommerce' ), $added_text );
        wc_print_notice( $notice, 'notice' );
    } elseif ( $current > $threshold && WC()->customer->get_billing_country() == 'GB' ) {
        wc_print_notice( 'Congrats! You have free shipping with more than £25 in your order', 'notice' );
    }

}

J'espère que ceci aide quelqu'un d'autre

0
Mike Devitt 4 nov. 2019 à 16:01