salimottmani salimottmani - 3 months ago 81
PHP Question

limit woocommerce product short description in home page and category page

I have included product short description in my home and category pages by adding the following code to my child theme functions.php

add_action('woocommerce_after_shop_loop_item_title','woocommerce_template_single_excerpt', 5);


Now I would like to limit the characters of product short description in the home and category pages.

Any help please??

More code and clarifications:
My add_action is added to the following file woocommerce/includes/wc-template-hooks.php and here are the Product Loop Items.

add_action( 'woocommerce_before_shop_loop_item', 'woocommerce_template_loop_product_link_open', 10 );
add_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_product_link_close', 5 );
add_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart', 10 );
add_action( 'woocommerce_before_shop_loop_item_title', 'woocommerce_template_loop_product_thumbnail', 10 );
add_action( 'woocommerce_shop_loop_item_title', 'woocommerce_template_loop_product_title', 10 );

add_action( 'woocommerce_before_subcategory', 'woocommerce_template_loop_category_link_open', 10 );
add_action( 'woocommerce_shop_loop_subcategory_title', 'woocommerce_template_loop_category_title', 10 );
add_action( 'woocommerce_after_subcategory', 'woocommerce_template_loop_category_link_close', 10 );

add_action( 'woocommerce_after_shop_loop_item_title', 'woocommerce_template_loop_price', 10 );
add_action( 'woocommerce_after_shop_loop_item_title', 'woocommerce_template_loop_rating', 5 );


everything is printed here: Mytheme/woocommerce/single-product.php and the code is

<div class="container-inner">
<?php do_action( 'woocommerce_before_shop_loop_item' ); ?>
<div class="image-block">
<a href="<?php the_permalink(); ?>">
<?php
/**
* woocommerce_before_shop_loop_item_title hook
*
* @hooked woocommerce_show_product_loop_sale_flash - 10
* @hooked woocommerce_template_loop_product_thumbnail - 10
*/
do_action( 'woocommerce_before_shop_loop_item_title' );
?></a>
<div class="product-block-hover"></div>

</div>
<a href="<?php the_permalink(); ?>"><h3 class="product-name"><?php the_title(); ?></h3></a>
<?php
/**
* woocommerce_after_shop_loop_item_title hook
*
* @hooked woocommerce_template_loop_rating - 5
* @hooked woocommerce_template_loop_price - 10
*/
do_action( 'woocommerce_after_shop_loop_item_title' );
?>

<?php do_action( 'woocommerce_after_shop_loop_item' ); ?>
</div>

Answer

You can edit the lenght with the woocommerce_short_description filter, do something like this:

add_filter('woocommerce_short_description','limit_short_descr');

function limit_short_descr($description){
  return ($description > 140) ? substr($description, 0 , 140) : $description;
}

Also you can add a &hellip; after the text to make it look better.

Comments