• Resolved nward85

    (@nward85)


    Anyone know how data from user meta table can be automatically retrieved? Either during checkout as details, or on the admin order page? I want details such as “Favorite color” to be automatically filled in the customer order (basically details they have on their profile page)

    https://wordpress.org/plugins/woocommerce/

Viewing 12 replies - 1 through 12 (of 12 total)
  • Plugin Contributor Mike Jolley

    (@mikejolley)

    https://codex.wordpress.org/Function_Reference/get_user_meta retrieves the value, but where are you putting it? Inside a field? Straight into the order data?

    Thread Starter nward85

    (@nward85)

    If I could put it in a non-editable custom field on product page that would be awesome.
    But straight into the order data makes more sense if I don’t even want it to be edited.

    Plugin Contributor Mike Jolley

    (@mikejolley)

    Thread Starter nward85

    (@nward85)

    Does this look accurate?

    add_action( 'woocommerce_checkout_update_order_meta', 'user_meta_1' );
    function user_meta_1( $order_id ) {
            update_post_meta($order_id, [META KEY HERE], $meta_value, $prev_value);
    }
    Plugin Contributor Mike Jolley

    (@mikejolley)

    You can get rid of $prev_value, and I’d make your function name more unique.

    Thread Starter nward85

    (@nward85)

    Okay and I don’t need any kind of get_user_id or anything?

    Plugin Contributor Mike Jolley

    (@mikejolley)

    You will to get the $meta_value – you haven’t set it to anything yet.

    Thread Starter nward85

    (@nward85)

    $user = get_userdata($userid);
    add_action( 'woocommerce_checkout_update_order_meta', 'user_favorite_scent_1' );
    function user_favorite_scent_1( $order_id ) {
            update_post_meta($order_id, ['favorite_scent_1'], $userid);
    }

    ?

    Plugin Contributor Mike Jolley

    (@mikejolley)

    Not close sorry :p

    $meta_value = get_user_meta( get_current_user_id(), 'something', true );
    Thread Starter nward85

    (@nward85)

    /**
     * woocommerce add user information to order
     */
    $meta_value = get_user_meta( get_current_user_id(), 'user_favorite_scent_1', true );
    add_action( 'woocommerce_checkout_update_order_meta', 'user_favorite_scent_1' );
    function user_favorite_scent_1( $order_id ) {
    	update_post_meta($order_id, 'favorite_scent_1', $meta_value);
    }
    
    /**
     * woocommerce display add user information to order
     */
    function display_order_data_in_admin( $order ){  ?>
        <div class="order_data_column">
            <h4><?php _e( 'Extra Details' ); ?></h4>
    		<?php
    			echo '<p><strong>' . __( 'Scent 1' ) . ':</strong>' . get_post_meta( $order->id, 'user_favorite_scent_1', true ) . '</p>';
    		?>
        </div>
    <?php }
    add_action( 'woocommerce_admin_order_data_after_order_details', 'display_order_data_in_admin' );

    Does not work. any ideas?

    Plugin Contributor Mike Jolley

    (@mikejolley)

    That code needs to be within your function. I’m only giving hints so you can work it out 🙂

    function user_favorite_scent_1( $order_id ) {
            $meta_value = get_user_meta( get_current_user_id(), 'user_favorite_scent_1', true );
    	update_post_meta($order_id, 'favorite_scent_1', $meta_value);
    }
    Thread Starter nward85

    (@nward85)

    Thats okay, love the challenge, and it helps me learn more as I go.

    Figured it out

    function user_favorite_scent_1( $order_id ) {
            $meta_value = get_user_meta( get_current_user_id(), 'favorite_scent_1', true );
    	update_post_meta($order_id, 'favorite_scent_1', $meta_value);
    }

    Had the user meta key wrong

    THANK YOU SO MUCH!

Viewing 12 replies - 1 through 12 (of 12 total)

The topic ‘Retrieve user data on/after checkout’ is closed to new replies.