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
Du musst angemeldet sein, um einen Kommentar abzugeben.
Funktionen funktionieren wie erwartet, es war in der Tat die " if " - Anweisung falsch war. Ich war überprüfen
$_POST
, die anwesend war, so dass die$_SESSION
gespeicherte Betrag wurde niemals neu zugewiesen, wie die custom Preis nach der Kasse geklickt wird (die POST-Probleme verursacht, in diesem Fall). Ich habe ihn geändert wie folgt Aussehen:Stellen Sie sicher, Bearbeiten Sie Ihre Zahlungs-Modul, wenn es sein muss!
InformationsquelleAutor LimaCraig