不用插件实现wordpress文章标题和正文自动截断

之前一直苦于标题太长换行导致网页错位影响美观。而通过CSS样式控制只能基于像素的截断,不能真正的对wordpress文章的标题和正文基于字数的精确截断。下面是实现代码,来源于知名的wordpress收费主题studiopress,在此表示感谢。

wordpress文章标题长度限制代码如下:

//标题截断部分代码,添加到你主题的function.php文件中。
function cut_str($src_str,$cut_length)
{
$return_str='';
$i=0;
$n=0;
$str_length=strlen($src_str);
while (($n<$cut_length) && ($i<=$str_length))
{
$tmp_str=substr($src_str,$i,1);
$ascnum=ord($tmp_str);
if ($ascnum>=224)
{
$return_str=$return_str.substr($src_str,$i,3);
$i=$i+3;
$n=$n+2;
}
elseif ($ascnum>=192)
{
$return_str=$return_str.substr($src_str,$i,2);
$i=$i+2;
$n=$n+2;
}
elseif ($ascnum>=65 && $ascnum<=90)
{
$return_str=$return_str.substr($src_str,$i,1);
$i=$i+1;
$n=$n+2;
}
else
{
$return_str=$return_str.substr($src_str,$i,1);
$i=$i+1;
$n=$n+1;
}
}
if ($i<$str_length)
{
$return_str = $return_str . '';
}
if (get_post_status() == 'private')
{
$return_str = $return_str . '(private)';
}
return $return_str;
}

用法://
找到下面代码


//替换为下面代码
post_title,36); ?>
//备注:36为字节数,请将36替换成适合页面的数值

文章内存字数限制:

//正文截断代码,添加到你主题的function.php文件中。
function the_content_limit($max_char, $more_link_text = '(>>更多)', $stripteaser = 0, $more_file = '') {
    $content = get_the_content($more_link_text, $stripteaser, $more_file);
    $content = apply_filters('the_content', $content);
    $content = str_replace(']]>', ']]>', $content);
    $content = strip_tags($content);
 
   if (strlen($_GET['p']) > 0) {
      echo "

"; echo $content; echo " ".__("Read More")." →"; echo "

"; } else if ((strlen($content)>$max_char) && ($espacio = strpos($content, " ", $max_char ))) { $content = substr($content, 0, $espacio); $content = $content; echo "

"; echo $content; echo "..."; echo " ".$more_link_text.""; echo "

"; } else { echo "

"; echo $content; echo " ".__(">>更多")." →"; echo "

"; } }

用法:

//找到下面代码

//替换为下面代码

//200为字数限制,最好为偶数。

收工!

点赞