lln dave
lln dave

Reputation: 21

Display purchase note and attribute on cart and checkout page in WooCommerce

The following code works and adds the purchase note to the cart items.

add_filter( 'woocommerce_get_item_data', 'wc_test', 10, 2 );  
function wc_test ( $other_data, $cart_item ){
    $post_data = get_post( $cart_item['product_id'] );
    $other_data[] = array( 'name' =>  $post_data->_purchase_note );
    return $other_data;
}

However, I always get ":" as result, for products that don't have a note.

I also need to add a specific attribute aswell under the note.

Any advice?

Upvotes: 2

Views: 657

Answers (1)

7uc1f3r
7uc1f3r

Reputation: 29624

  • The colon is automatically added to the key. Because you only use name, this will be added at the end.
  • You can use get_purchase_note()

So you get:

// Display on cart & checkout pages
function filter_woocommerce_get_item_data( $item_data, $cart_item ) {
    // Get an instance of the WC_Product object
    $product = $cart_item['data'];
    
    // Get purchase_note
    $purchase_note = $product->get_purchase_note();
    
    // Get the product attribute value (adjust if desired)
    $attribute = $product->get_attribute( 'pa_color' );
    
    // When empty
    if ( empty ( $attribute ) ) {
        $attribute = '';
    }
    
    // NOT empty
    if ( ! empty( $purchase_note ) ) {
        $item_data[] = array(
            'key'     => __( 'Note', 'woocommerce' ),
            'value'   => $purchase_note . $attribute,
            'display' => $purchase_note . $attribute,
        );
    }
    
    return $item_data;
}
add_filter( 'woocommerce_get_item_data', 'filter_woocommerce_get_item_data', 10, 2 );

Upvotes: 4

Related Questions