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>
You can edit the lenght with the
woocommerce_short_description
filter, do something like this:Also you can add a
…
after the text to make it look better.Thank you Skatox for your help, I finally sloved this issue.
Here is what I did:
In the following file(wp-contentspluginswoocommercetemplatessingle-productshort-description.php) I added the following code:
With this, I was able to display the characters I needed in my home and category pages and leave product page as it is.
P.S: the best way to get this done if you are facing the same issue, is to create the same file (short-description.php), edit the code and put it in woocommerce folder in your theme so that your changes are not affected by woocommerce update.
Instead of editing files directly within the plugin (which is a very bad idea because once update the plugin and all of your changes will be lost!)
create a function and then hook to that filter… something like this…
paste this in your functions.php file of your theme.
explode breaks the original string into an array of words, array_splice lets you get certain ranges of those words, and then implode combines the ranges back together into single strings.
and use this line where you want to display product description –
use this code to change Limit on the Home and Category Page not Product-detailed Page.
I think this the better way. It will limit the short description to 85 characters, Makes your archive page look cleaner: