問題描述
我在我的 WordPress 網站上使用以下代碼來縮短我在 WooCommerce 上的描述摘錄,如果我輸入 14 個或更少的字符,它可以正常工作.只要我輸入超過 14 個字符,它就會顯示完整的簡短描述.
I'm using the following code on my WordPress site to shorten my description excerpt on WooCommerce and it works fine if I input my characters for 14 or less. As soon as I enter more than 14 characters it shows the full short description.
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>";
}
}
任何幫助將不勝感激.
謝謝.
推薦答案
您的代碼正在計算帶有空格的字母,而下面的代碼正在計算沒有空格的單詞.請查看此實時 php 文件 (這里是你的代碼在包含 25 個單詞的字符串上的結果,我的也是).然后此代碼按您的意愿正常工作:
Your code is counting letters with white spaces, instead the code below is counting words without white spaces. Please See this live php file in action (here the result of your code on a string containing 25 words and mine too). Then this code is working correctly as you wish:
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>';
}
<小時>
或者您可以使用下面線程中的函數,以這種方式使用:
Or you can use the function from the thread below, with yours this way:
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>';
}
}
這應該有效......
This should work…
此代碼基于此線程:如何將字符串截斷為 PHP 中的前 20 個單詞?
這篇關于限制 Woocommerce 中的產品簡短描述長度的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!