Php 限制商业中的产品简短描述长度

Php 限制商业中的产品简短描述长度,php,wordpress,woocommerce,product,hook-woocommerce,Php,Wordpress,Woocommerce,Product,Hook Woocommerce,我在我的WordPress网站上使用以下代码来缩短我在WooCommerce上的描述摘录,如果我输入14个或更少的字符,效果很好。只要我输入超过14个字符,它就会显示完整的简短描述 add_action( 'woocommerce_after_shop_loop_item_title', 'lk_woocommerce_product_excerpt', 35, 2); if (!function_exists('lk_woocommerce_product_excerpt')) { f

我在我的WordPress网站上使用以下代码来缩短我在WooCommerce上的描述摘录,如果我输入14个或更少的字符,效果很好。只要我输入超过14个字符,它就会显示完整的简短描述

add_action( 'woocommerce_after_shop_loop_item_title', 'lk_woocommerce_product_excerpt', 35, 2);
if (!function_exists('lk_woocommerce_product_excerpt'))
{
    function lk_woocommerce_product_excerpt()
    {
        $content_length = 14;
        global $post;
        $content = $post->post_excerpt;
        $wordarray = explode(' ', $content, $content_length + 1);
        if(count($wordarray) > $content_length) :
            array_pop($wordarray);
            array_push($wordarray, '...');
            $content = implode(' ', $wordarray);
            $content = force_balance_tags($content);
            $content = substr($content, 0, 14);

        endif;
        echo "<span class='excerpt'><p>$content...</p></span>";
    }
}
add_action('woocommerce_在_shop_loop_item_title'之后,'lk_woocommerce_product_摘录',35,2);
如果(!function_存在('lk_商业_产品_摘录'))
{
功能lk_商业_产品_摘录()
{
$content_length=14;
全球$员额;
$content=$post->post_摘录;
$wordarray=explode(“”,$content,$content\u length+1);
如果(计数($wordarray)>$content\u长度):
数组_pop($wordarray);
数组推送($wordarray,“…”);
$content=内爆(“”,$wordarray);
$content=强制平衡标签($content);
$content=substr($content,0,14);
endif;
回声“$content…

”; } }
任何帮助都将不胜感激


谢谢。

您的代码是用空格计数字母,而下面的代码是用空格计数单词。请(这里是你的代码在一个包含25个单词的字符串上的结果,我的也是)。然后,此代码按照您的意愿正常工作:

add_action( 'woocommerce_after_shop_loop_item_title', 'shorten_product_excerpt', 35 );
function shorten_product_excerpt()
{
    global $post;
    $limit = 14;
    $text = $post->post_excerpt;
    if (str_word_count($text, 0) > $limit) {
        $arr = str_word_count($text, 2);
        $pos = array_keys($arr);
        $text = substr($text, 0, $pos[$limit]) . '...';
        // $text = force_balance_tags($text); // may be you dont need this…
    }
    echo '<span class="excerpt"><p>' . $text . '</p></span>';
}
add_action('woocommerce_后加_-shop_-loop_-item_-title','shorten_-product_-extract',35);
函数缩短_产品_摘录()
{
全球$员额;
$limit=14;
$text=$post->post_摘录;
if(str_word_count($text,0)>$limit){
$arr=str\u word\u count($text,2);
$pos=阵列密钥($arr);
$text=substr($text,0,$pos[$limit])。“…”;
//$text=force\u balance\u tags($text);//可能你不需要这个…
}
回显“”.$text.“

”; }

或者,您也可以使用下面线程中的函数,通过以下方式:

if (!function_exists('lk_limit_text'))
{
    function lk_limit_text($text, $limit) {
        if (str_word_count($text, 0) > $limit) {
            $words = str_word_count($text, 2);
            $pos = array_keys($words);
            $text = substr($text, 0, $pos[$limit]) . '...';
        }
        return $text;
    }
}

add_action( 'woocommerce_after_shop_loop_item_title', 'lk_woocommerce_product_excerpt', 35, 2);
if (!function_exists('lk_woocommerce_product_excerpt'))
{
    function lk_woocommerce_product_excerpt()
    {
        global $post;
        $content = $post->post_excerpt;
        // $content = force_balance_tags($content); // may be you dont need this…
        echo '<span class="excerpt"><p>' . lk_limit_text( $content, 14 ) . '</p></span>';
    }
}
如果(!function_存在('lk_limit_text'))
{
函数lk_limit_text($text,$limit){
if(str_word_count($text,0)>$limit){
$words=str_word_count($text,2);
$pos=数组_键($words);
$text=substr($text,0,$pos[$limit])。“…”;
}
返回$text;
}
}
添加行动('woocommerce'u在'u shop'u loop'u item'u title'之后,'lk'u woocommerce'u product'u摘录',35,2);
如果(!function_存在('lk_商业_产品_摘录'))
{
功能lk_商业_产品_摘录()
{
全球$员额;
$content=$post->post_摘录;
//$content=force\u balance\u tags($content);//可能你不需要这个…
回显“”.lk_limit_text($content,14)。”

; } }
这应该有用


此代码基于以下线程:

您可以限制商业产品描述

使用此代码-

add_filter('woocommerce_short_description', 'limit_product_short_description', 10, 1);

function limit_product_short_description($post_excerpt)
 {
    if (!is_product()) 
    {
         $pieces = explode(" ", $post_excerpt);
         $post_excerpt = implode(" ", array_splice($pieces, 0, 14));
     }
   return $post_excerpt;
 }
分解将原始字符串拆分为一个单词数组,数组拼接允许您获得这些单词的特定范围,然后内爆将这些范围重新组合为单个字符串

使用此代码更改店铺页面而非产品详细信息页面上的限制


如果要在两个页面上进行更改,请删除(!is_product())
条件。

感谢代码LoicTheAztec!不幸的是,这根本无法缩短描述长度。你有没有其他的想法来解释为什么原始代码在超过14个字符时不能工作?我尝试了不同的WordPress主题,但没有什么不同。出于某种原因,我认为您的原始代码是在计算字符,而不是单词。所以它确实有效!非常感谢你!只是一个简单的后续问题。是否有一种简单的方法来更改代码,使其使用完整的描述而不是简短的描述?@user3612498当然可以,您可以替换
$post->post\u摘录通过
$post->post\u内容…谢谢@LoicTheAztec你是最棒的!