Reputation: 542
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.
Upvotes: 1
Views: 190
Reputation: 29670
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
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>
Upvotes: 2