samedi 12 décembre 2015

Saving data to WooCommerce session

I'm attempting to save a simple text input to the WooCommerce session. The session is created when a user adds something to their cart.

My input field exists in custom page template that will be placed in the user flow after the cart but before the checkout: cart > my template > checkout.

So far

Simple form to capture data (custom template file)

<form name="group" method="post" class="checkout woocommerce-checkout" action="http://localhost:/site.dev/checkout">
    <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>

Receiving and setting data (I'm having trouble figuring out when/how to run this in my custom page)

function 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 );
        }
    }
add_action('woocommerce_checkout_process', 'set_and_save_input_to_session');

Retrieving and saving data

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');

I'm currently working my way through what are to me, more complex solutions and therefore I'd appreciate if anyone could point out any major flaws with my process so far.



via Chebli Mohamed

Aucun commentaire:

Enregistrer un commentaire