Umrechnung von Maßeinheiten basierend auf dem Land auf der Woocommerce-Produktseite

Lesezeit: 3 Minuten

Umrechnung von Maseinheiten basierend auf dem Land auf der Woocommerce Produktseite
James Donald

Ich habe eine Woocommerce-Site, die in den Backend-Einstellungen Kg und cm als Maßeinheiten verwendet. Die Website verkauft hauptsächlich nach Europa, also keine Sorge. Jetzt muss ich auf dem US-Markt verkaufen und werde gebeten, die Site so zu konfigurieren, dass Benutzer, die sich in der US-Client-Gruppe anmelden, sowohl imperiale Maßeinheiten als auch oder anstelle von metrischen Einheiten sehen.

Gibt es eine Möglichkeit, zumindest das Gewicht und die Abmessungen in Imperial anzuzeigen, indem ich eine Umrechnung usw. verwende und Primäreinheiten als kg und cm in der Datenbank behalte?

Ich habe überall nach einem Plugin gesucht, kann aber keins finden, das mir hilft.

Umrechnung von Maseinheiten basierend auf dem Land auf der Woocommerce Produktseite
LoicTheAztec

Für einzelne Produktseiten ist hier ein konkretes Beispiel, das Maßeinheitswerte umwandelt und die korrekte Maßeinheitsbezeichnung für Länder festlegt, die imperiale Einheiten verwenden.

// For Weight
add_filter( 'woocommerce_format_weight', 'imperial_format_weight', 20, 2 );
function imperial_format_weight( $weight_string, $weight ) {
    $country = WC()->customer->get_shipping_country(); // Customer country
    $countries = array( 'US', 'LR', 'MM' ); // Imperial measurement countries

    if ( ! in_array( $country, $countries ) ) return $weight_string; // Exit

    $weight_unit = get_option( 'woocommerce_weight_unit' );

    $weight_string = wc_format_localized_decimal( $weight );
    if ( empty( $weight_string ) )
        return __( 'N/A', 'woocommerce' ); // No values

    if ( $weight_unit == 'kg' ) {
        // conversion rate for 'kg' to 'lbs'
        $rate = 2.20462;
        $label=" lbs";
    } elseif ( $weight_unit == 'g' ) {
        // conversion rate for 'g' to 'oz'
        $rate = 0.035274;
        $label=" oz";
    }

    return round( $weight * $rate, 2 ) . $label;
}

// For Dimensions
add_filter( 'woocommerce_format_dimensions', 'imperial_format_dimensions', 20, 2 );
function imperial_format_dimensions( $dimension_string, $dimensions ) {
    $country = WC()->customer->get_shipping_country(); // Customer country
    $countries = array( 'US', 'LR', 'MM' ); // Imperial measurement countries

    if ( ! in_array( $country, $countries ) ) return $dimension_string; // Exit

    $dimension_unit = get_option( 'woocommerce_dimension_unit' );

    $dimension_string = implode( ' x ', array_filter( array_map( 'wc_format_localized_decimal', $dimensions ) ) );
    if( empty( $dimension_string ) )
        return __( 'N/A', 'woocommerce' ); // No values

    if ( $dimension_unit == 'mm' ) {
        // conversion rate for 'mm' to 'inch'
        $rate = 0.0393701;
        $label=" in";
    } elseif ( $dimension_unit == 'cm' ) {
        // conversion rate for 'cm' to 'inch'
        $rate = 0.393701;
        $label=" in";
    } elseif ( $dimension_unit == 'm' ) {
        // conversion rate for 'm' to 'yard'
        $rate = 1.09361;
        $label=" yd";
    }

    $new_dimentions = array();

    foreach( $dimensions as $key => $value ){
        $new_dimentions[$key] = round( $value * $rate, 2 );
    }

    return implode( ' x ', array_filter( array_map( 'wc_format_localized_decimal', $new_dimentions ) ) ) . $label;
}

Dieser Code wird in die function.php-Datei Ihres aktiven untergeordneten Designs (oder Designs) eingefügt. Getestet und funktioniert.

Geben Sie hier die Bildbeschreibung ein

  • Hallo. Ok, ich habe den Code getestet und er funktioniert hervorragend, wenn die Lieferadresse des Kunden auf US eingestellt ist. Mein Problem ist jetzt, dass, wenn UK oder andere Kunden, die Metriken verwenden, die Website besuchen, die Dimensionen überhaupt nicht angezeigt werden. Gibt es eine Möglichkeit, abhängig vom geografischen Standort des Kunden sowohl imperial als auch metrisch anzuzeigen?

    – James Donald

    15. März 2018 um 7:17 Uhr


  • @JamesDonald Ja, das ist möglich… Wenn Sie nicht wissen, wie es geht, sollten Sie eine neue Frage mit dem Tag „Woocommerce“ stellen und mich bitte hier benachrichtigen, sobald Sie fertig sind. Außerdem gab es einen kleinen Fehler in meinem eigentlichen Code, den ich aktualisiert habe.

    – LoicTheAztec

    15. März 2018 um 10:26 Uhr

  • verstanden über das Stellen von Fragen – Entschuldigung – danke für die Änderung des Codes – alles funktioniert jetzt perfekt.

    – James Donald

    16. März 2018 um 0:33 Uhr

1004580cookie-checkUmrechnung von Maßeinheiten basierend auf dem Land auf der Woocommerce-Produktseite

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy