WooCommerce: set-Preis programmgesteuert

Ich bin derzeit Entleerung und fügte hinzu, ein Produkt, um den Nutzern Warenkorb wenn Sie die Seite besuchen - da Sie immer nur ein einzelnes Produkt (eine Spende), etwa so:

function add_donation_to_cart() {
    global $woocommerce;
    $woocommerce->cart->empty_cart();
    $woocommerce->cart->add_to_cart('195', 1, null, null, null);
}

Ich benutze eine benutzerdefinierte form um die $_POST Informationen - die Menge ist veröffentlicht auf der Spenden-Seite, die effektiv die Benutzer Wagen, die bereits eine Produkt in es. Die benutzerdefinierte Menge verwendet wird, die in der Funktion unten zu verändern den Preis. Der Preis korrekt angezeigt, im Warenkorb, auf der checkout-Seite als auch auf die Weiterleitung der Zahlung-gateway (innerhalb der umgeleiteten Seite).

Jedoch, sobald Sie umgeleitet werden, woocommerce erstellt eine Reihenfolge, und es ist markiert als "Verarbeitung". Die Beträge beziehen sich auf die Reihenfolge falsch ist.

Die Funktion habe ich benutzt, um den Preis unten angezeigt wird:

add_action('woocommerce_before_calculate_totals', 'add_custom_total_price');

function add_custom_total_price($cart_object) 
{
    session_start();
    global $woocommerce;

    $custom_price = 100;

    if($_POST)
    {
        if(!empty($_POST['totalValue']))
        {
            $theVariable = str_replace(' ', '', $_POST['totalValue']);

            if(is_numeric($theVariable))
            {
                $custom_price = $theVariable;
                $_SESSION['customDonationValue'] = $custom_price;
            }
            else
            {
                $custom_price = 100;
            }
        }
    }
    else if(!empty($_SESSION['customDonationValue']))
    {
        $custom_price = $_SESSION['customDonationValue'];
    }
    else
    {
        $custom_price = 100;
    }

    var_dump($_SESSION['customDonationValue']);

    foreach ( $cart_object->cart_contents as $key => $value ) 
    {
        $value['data']->price = $custom_price;
    }
}

Ich bin mir jetzt nicht ganz sicher, ob es hat etwas zu tun mit meiner if-Anweisung, aber der Preis ist immer falsch eingestellt zu 100 obwohl die Produkte Preis auf 0 gesetzt ist.

Jede Hilfe oder Einsicht wäre sehr geschätzt!

InformationsquelleAutor LimaCraig | 2015-05-26

Schreibe einen Kommentar