限制主页和类别页面中的woocommerce产品简短描述

时间:2016-03-23 11:20:19

标签: php wordpress woocommerce

我在家庭和类别页面中添加了产品简短说明,将以下代码添加到我的子主题函数中.php

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

现在我想在主页和类别页面中限制产品简短描述的字符。

有任何帮助吗?

更多代码和说明: 我的add_action被添加到以下文件woocommerce / includes / wc-template-hooks.php中,这里是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 );

所有内容都打印在这里:Mytheme / woocommerce / single-product.php和代码

   <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>              

4 个答案:

答案 0 :(得分:0)

您可以使用woocommerce_short_description过滤器编辑长度,执行以下操作:

add_filter('woocommerce_short_description','limit_short_descr');

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

此外,您可以在文字后添加&hellip;以使其看起来更好。

答案 1 :(得分:0)

谢谢Skatox的帮助,我终于解决了这个问题。 这是我做的:

在以下文件中( \ wp-contents \ plugins \ woocommerce \ templates \ single-product \ short-description.php ),我添加了以下代码:

<?php
    if ( is_single()):
        echo apply_filters( 'woocommerce_short_description', $post->post_excerpt     );
    else :
        echo substr(apply_filters( 'woocommerce_short_description', $post-    >post_excerpt ),0,140);
    endif;
?> 

有了这个,我能够在我的家庭和类别页面中显示我需要的字符,并保留产品页面。

PS:如果您遇到同样的问题,最好的方法就是创建相同的文件(short-description.php),编辑代码并将其放入主题中的woocommerce文件夹中,以便进行更改不受woocommerce更新的影响。

答案 2 :(得分:0)

而不是直接在插件中编辑文件(这是一个非常糟糕的主意,因为一旦更新插件并且所有更改都将丢失!)

创建一个函数,然后挂钩到那个过滤器......就像这样......

add_filter('woocommerce_short_description', 'reigel_woocommerce_short_description', 10, 1);
function reigel_woocommerce_short_description($post_excerpt){
    if (!is_product()) {
        $pieces = explode(" ", $post_excerpt);
        $post_excerpt = implode(" ", array_splice($pieces, 0, 10));

    }
    return $post_excerpt;
}

将其粘贴到主题的 functions.php 文件中。

explode 将原始字符串分解为单词数组,array_splice允许您获取这些单词的特定范围,然后 implode 将范围重新组合成单​​个字符串。

使用此行显示产品说明 -

<?php echo apply_filters( 'woocommerce_short_description', $post->post_excerpt ); ?>

主页和类别页面<产品详细信息页上使用此代码更改限制

答案 3 :(得分:0)

我认为这是更好的方法。它会将简短描述限制为85个字符,使您的存档页面看起来更清晰:

function customize_shop_loop_excerpt() {
function woocommerce_shop_loop_excerpt_custom() {
<p>
<?php echo preg_replace('/\s+?(\S+)?$/', '', substr(get_the_excerpt(), 0, 85)) . '...'; ?>
</p>
<?php
}
remove_action ('product_box_after', 'woocommerce_shop_loop_excerpt', 20);
add_action ('product_box_after', 'woocommerce_shop_loop_excerpt_custom', 20);
}
add_action ('after_setup_theme', 'customize_shop_loop_excerpt');