Ravi Parmar
Ravi Parmar

Reputation: 65

How to add/update custom cart item data in the cart page

I want to add a comment to individual products in the cart page. I am new to woocommerce wordpress plugin so I have no idea how to do.

I have done some research. In that tutorial, I found that I can use woocommerce_add_cart_item_data hook this way:

add_filter( 'woocommerce_add_cart_item_data', 'add_comment', 10, 3 );

function add_comment( $cart_item_data, $product_id, $variation_id ) {

    $cart_item_data['comment'] = 'This is comment';

    return $cart_item_data;

}

but this does not work in my case.

I attach the Cart page image so you can understand.

enter image description here

I hope you guys understand what I want?

Thank you.

Upvotes: 2

Views: 5060

Answers (2)

Rajeev
Rajeev

Reputation: 1498

Below code will add a custom text to an item in cart:

You need to create a custom field "comment" for the product to use it here.

 add_filter( 'woocommerce_add_cart_item_data', 'add_comment', 10, 3 );

function add_comment( $cart_item_data, $product_id, $variation_id ) {

    $cart_item_data['comment'] = 'This is comment';

    return $cart_item_data;

}

Add a Custom text/comment before Cart table in Cart Page:

add_action( 'woocommerce_before_cart_table', 'add_comment' );

function add_comment() 
{
    echo '<div class="woocommerce-info">This is comment</div>';
}

Add a Custom text/comment after Cart table in Cart Page:

add_action( 'woocommerce_after_cart_table', 'add_comment' );

function add_comment() {
    echo '<div class="woocommerce-info">This is comment</div>';
}

HOW TO ADD AN INPUT FIELD TO WOOCOMMERCE CART ITEMS & Let users update input fields in the cart

https://pluginrepublic.com/how-to-add-an-input-field-to-woocommerce-cart-items/

Refer this link for a working solution to similar request: https://stackoverflow.com/a/21818028/12291365

If you are okay with using the plugin, then this plugin will do the trick: https://wordpress.org/plugins/wc-fields-factory/

Upvotes: 3

Subair
Subair

Reputation: 91

Use code snippet below for adding custom values for each cart item.

Please add your logic for attaching values for each item

// Add custom value into cart item
add_filter('woocommerce_add_cart_item_data','sub_add_item_data',1,2);

if(!function_exists('sub_add_item_data'))
{
    function sub_add_item_data($cart_item_data,$product_id)
    {
        // use condition for adding custom value here
        $new_value = array( 
                'sub_custom_value' => 'custom value',
            );
        return array_merge($cart_item_data,$new_value);
    }
}


// Extract  custom values
add_filter('woocommerce_get_cart_item_from_session', 'sub_get_cart_items_from_session', 1, 3 );
if(!function_exists('sub_get_cart_items_from_session'))
{
    function sub_get_cart_items_from_session($item,$values,$key)
    {
        if (array_key_exists( 'sub_custom_value', $values ) )
        {
        $item['sub_custom_value'] = $values['sub_custom_value'];
        }       
        return $item;
    }
}


// display in cart and checkout

add_filter('woocommerce_checkout_cart_item_quantity','sub_add_user_custom_option_from_session_into_cart',1,3);  
add_filter('woocommerce_cart_item_price','sub_add_user_custom_option_from_session_into_cart',1,3);
if(!function_exists('sub_add_user_custom_option_from_session_into_cart'))
{
 function sub_add_user_custom_option_from_session_into_cart($product_name, $values, $cart_item_key )
    {    
        if(isset( $values['sub_custom_value'] ) && '' != $values['sub_custom_value'] )
        {
            $return_string = $product_name . "</a><dl class='variation'>";
            $return_string .= "<table class='sub_options_table' id='" . $values['product_id'] . "'>";
            $return_string .= "<tr><td>" . $values['sub_custom_value'] . "</td></tr>";
            $return_string .= "</table></dl>"; 
            return $return_string;
        }
        else
        {
            return $product_name;
        }
    }
}

Upvotes: 0

Related Questions