Php 限制商业中的产品简短描述长度
我在我的WordPress网站上使用以下代码来缩短我在WooCommerce上的描述摘录,如果我输入14个或更少的字符,效果很好。只要我输入超过14个字符,它就会显示完整的简短描述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
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你是最棒的!