2016-07-02 205 views
4

我在我的WordPress網站上使用以下代碼來縮短我在WooCommerce上的描述摘錄,並且如果我輸入的字符數爲14或更少,它的工作正常。只要我輸入超過14個字符,就會顯示完整的簡短說明。限制WooCommerce產品描述長度

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>"; 
    } 
} 

任何幫助,將不勝感激。

謝謝。

回答

2

- - (更新) - -

您的代碼計數字母與白的空間,而不是下面的代碼不能包含空格字數統計。請See this live php file in action(這裏是你的代碼在包含25個字的字符串上的結果,也是我的)。然後,該代碼工作正常,如你所願:

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; 
     $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>'; 
    } 
} 

或者你可以從線程中使用了以下功能,與你的這種方式:

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>'; 
    } 
} 

這應該工作...

此代碼是基於此線程:How can I truncate a string to the first 20 words in PHP?

+0

感謝代碼LoicTheAztec!不幸的是,這完全無法縮短描述長度。你有什麼其他的想法,爲什麼原始代碼不能超過14個字符?我嘗試了不同的WordPress主題,但這沒有什麼區別。 – user3612498

+0

出於某種原因,我認爲你的原代碼是數字字符,而不是單詞。所以它工作!非常感謝! – user3612498

+0

只是一個快速跟進問題。有沒有簡單的方法來改變代碼,所以它使用WooCommerce完整描述而不是短代碼? – user3612498

0

您可以限制WooCommerce產品desc ription

使用此代碼 -

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

爆炸休息原字符串成字的數組,array_splice讓你得到的那些話一定範圍內,然後破滅結合的範圍重新走到一起進入單個字符串。

使用此代碼至變更限制在商店頁面不產品詳細頁面

如果您想在兩個頁面上更改刪除if (!is_product())條件。

相關問題