I’m trying to display the product description at WooCommerce checkout.
I’m using:
add_filter( 'woocommerce_get_item_data', 'wc_checkout_product_description_2', 10, 2 );
function wc_checkout_product_description_2( $other_data, $cart_item )
{
$post_data = get_post( $cart_item['product_id'] );
$other_data[] = array( 'name' => $post_data->post_excerpt );
return $other_data;
}
It takes the product short description and displays it below the product.
It almost works perfectly, but it displays a colon (:) at the end of the description and the colon remains even if there is no short description.
Result:
I can’t figure out why it appears any how to get rid of it. I need some help.
Advertisement
Answer
The colon is automatically added to the key. Because you only use name, this will be added at the end of the product description.
To display this correctly, you can use:
// Display on cart & checkout pages
function filter_woocommerce_get_item_data( $item_data, $cart_item ) {
// Product excerpt
$post_excerpt = get_the_excerpt( $cart_item['product_id'] );
// NOT empty
if ( ! empty( $post_excerpt ) ) {
$item_data[] = array(
'key' => __( 'Product description', 'woocommerce' ),
'value' => $post_excerpt,
'display' => $post_excerpt,
);
}
return $item_data;
}
add_filter( 'woocommerce_get_item_data', 'filter_woocommerce_get_item_data', 10, 2 );
OR if you really want to remove the colon/name (key). In addition to using the filter hook with code from my answer, you will also have to overwrite the cart/cart-item-data.php template file
- This template can be overridden by copying it to
yourtheme/woocommerce/cart/cart-item-data.php.
Replace
<dl class="variation">
<?php foreach ( $item_data as $data ) : ?>
<dt class="<?php echo sanitize_html_class( 'variation-' . $data['key'] ); ?>"><?php echo wp_kses_post( $data['key'] ); ?>:</dt>
<dd class="<?php echo sanitize_html_class( 'variation-' . $data['key'] ); ?>"><?php echo wp_kses_post( wpautop( $data['display'] ) ); ?></dd>
<?php endforeach; ?>
</dl>
With
<dl class="variation">
<?php foreach ( $item_data as $data ) : ?>
<dt class="<?php echo sanitize_html_class( 'variation-' . $data['key'] ); ?>"><?php echo wp_kses_post( wpautop( $data['display'] ) ); ?></dt>
<?php endforeach; ?>
</dl>
