Speichern von Daten in einem WooCommerce-Sitzung
Versuche ich zu sparen, mit einem einfachen text-Eingabe für das WooCommerce-Sitzung. Die session wird erstellt, wenn ein Benutzer fügt etwas zu Ihrem Warenkorb.
Mein input-Feld vorhanden ist, in benutzerdefinierten Seitenvorlage gesetzt wird in der Benutzer-flow nachdem der Wagen aber vor der Kasse: Warenkorb > mein template > Kasse.
So weit
Einfaches Formular zum erfassen von Daten (benutzerdefinierte Vorlage-Datei)
<form name="group" method="post" class="checkout woocommerce-checkout" action="http://localhost:/site.dev/my-template">
<div class="group-order">
<p class="form-row form-row woocommerce-validated" id="create_new_group_field">
<label for="create_new_group" class="">Join an existing group</label>
<input type="text" class="input-text " name="create_new_group" id="create_new_group">
</p>
</div>
</form>
Empfangen und Daten einstellen (ich habe Schwierigkeiten, herauszufinden, Wann/wie diese laufen. auf meiner eigenen Seite)
UPDATE
Ich habe den code auf meiner Seite Vorlage, damit die Seite Prozesse selbst und dann wieder direkt an die Kasse.
Funktion set_and_save_input_to_session() {
if( !is_admin( ) ) {
//User input
if( ! empty( $_POST['create_new_group'] ) ) {
$group_input_value = $_POST['create_new_group'];
//Set session and save data
WC()->session->set( 'group_order_data', $group_input_value );
wp_redirect( 'http://localhost:28/site.dev/checkout' );
exit();
}
}
get_header();
add_action('woocommerce_checkout_process', 'set_and_save_input_to_session');
Abrufen und speichern von Daten
function retrieve_and_save_group_input_value_to_order_meta() {
$retrived_group_input_value = WC()->session->get( 'group_order_data' );
update_post_meta( $order_id, '_create_new_group', $retrived_group_input_value );
}
add_action('woocommerce_checkout_update_order_meta', 'retrieve_and_save_group_input_value_to_order_meta');
Derzeit arbeite ich meinen Weg durch was sind mir, komplexere Lösungen und daher würde ich es begrüßen, wenn jemand könnte darauf hinweisen, keine größeren Mängel mit meinem Prozess so weit.
UPDATE
Kann ich bestätigen, dass das Formular, das Daten empfängt und dass die WC()->session->set
ist die Einstellung der Daten. (Dank an @Firefog für die Annahme, die Verwendung der $_SESSION
global)
Nach weiteren Ermittlungen und die Suche nach dem richtigen Ort, um var_dump
die session-Daten fand ich, dass die Daten, die festgelegt wurde, um die Sitzung mit meiner ursprünglichen Methode.
Den Daten gesetzt ist, aber ich kann nicht sehen, warum die Daten nicht speichern, um die Reihenfolge.
- warum würden Sie wollen, um Sie auf Ihre eigene Seite? Ich kann sehen, dass Sie das Formular in die Seite...
- Danke, wegen dieser Frage selbst ich es geschafft mein Problem zu lösen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist mehr zu sagen Danke für die Lösung meines Problems. Aber hier ist eine Antwort, zu:
Den post-meta konnte nicht aktualisiert worden, weil es keine
$order_id
parameter in Ihrer callback-Funktion. Dies sollte den trick tun:Hier ist ein anderer Ansatz.
1. Seite:
Nun in einer anderen Seite, das folgende schreiben erhalten Sie den Wert:
'woocommerce_checkout_update_order_meta'
Haken.session_start()
um den ersten Haken genannt, in der shortcode-Funktionwoocommerce_check_cart_items
. Ich habe einevar_dump
des$_SESSION
variable, die mir sagt, meine Daten festgelegt ist, an der Sitzung, das ist toll. Derzeit ist die Reihenfolge meta wird nicht aktualisiert mit den Daten. Ich werde berichten.update_post_meta
Funktion.