之前一直苦于标题太长换行导致网页错位影响美观。而通过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为字数限制,最好为偶数。
收工!