WooCommerce custom Preis mit get_price () - Funktion

Hab ich momentan Spiele seit etwa mit der Verwendung mehrerer Preise/Währungen basierend auf dem Standort der Benutzer. Ich werde durch die ganze Bestellung und ich bin fast da.

Ich bin mit der get_price() - Funktion, um den Haken mit woocommerce_get_price (befindet sich in class-wc-product.php, Linie 822) und dann finden Sie custom-field-Beträge, die ich eingestellt habe (gb_price, us_price etc) aus dem Produkt.

Alles Prima funktioniert im shop, Einzel-Produktansicht, Warenkorb, Kasse, sondern, wenn Bestellung alles fällt zurück auf die Standard-Basis-Kosten-und Währung. Ich habe bemerkt, dass dies nur fehl, wenn die Haken in der via functions.php. Wenn ich die änderung der Funktion, sich direkt in der class-Datei, funktioniert alles perfekt.

Ich wirklich nicht wollen, zu hacken, die im Kern von WC so kann jemand schauen und mir sagen, warum es ausfällt? Hier ist mein code...

class-wc-product.php

function get_price() {  
    return apply_filters( 'woocommerce_get_price', $this->price, $this );
}

functions.php

add_filter('woocommerce_get_price', 'return_custom_price', $product, 2); 
function return_custom_price($price, $product) {    
    global $post, $woocommerce;
    //Grab the product id
    $post_id = $product->id; 
    //Get user's ip location and correspond it to the custom field key
    $user_country = $_SESSION['user_location'];
    $get_user_currency = strtolower($user_country.'_price');
    //If the IP detection is enabled look for the correct price
    if($get_user_currency!=''){
        $new_price = get_post_meta($post_id, $get_user_currency, true);
        if($new_price==''){
            $new_price = $price;
        }
    }
    return $new_price;
}   

Damit das funktioniert überall, außer der AUFTRAGSBESTÄTIGUNG. Wenn ich bewegen Sie einfach die Funktion aus functions.php auf die Klasse selbst innerhalb get_price(), es funktioniert perfekt.

Haben Sie jemals herausfinden? Ich würde gerne etwas tun, ähnlich wie in WooCommerce.
Ich habe diese arbeiten, die ja, zumindest in einem sehr rohen Zustand angefahren, meine Umgebung, aber ich denke, der code sollte helfen, zumindest setzen Sie in die richtige Richtung. Ich verwende jetzt eine Währung mit einem festen Preis für jedes Produkt, das habe ich auch gemacht, in diesem sich dynamisch verändern, basierend auf IP-Erkennung oder der backup-user wählen. Bitte finden Sie in den aktualisierten Antworten.
Entwickelte ich ein plugin, das unterstützt mehrere Währungen und führt die Konvertierung, aber ich kann es hier posten, wie es wurde zu einem kommerziellen Produkt (außer, es ist Recht Komplex und enthält Tausende Zeilen code). Ich will nicht von StackOverflow für Eigenwerbung, wenn Sie weitere Informationen wünschen, senden Sie mir eine Linie.

InformationsquelleAutor zilj | 2013-02-26

Schreibe einen Kommentar