wordpress 首页文章显示摘要


    wordpress首页中每篇文章都是全文输出的, 不符合国人的习惯,这里讲述一个比较好的实现摘要的方法,优点:

    1 适用于所有文章, 不用在文章中插入特殊的符号

    2 保持文章的原有格式

   以inove主题为例修改,其他主题修改相同的文件即可

   在inove/functions.php 最后的

   <?php
   }
   ?>

修改为

<?php
}
if (! function_exists('character_limiter'))
{
    function character_limiter($str, $n = 300, $end_char = '……')
    {
        if (strlen($str) <= $n)
        {
            return $str;
        }

        $str = preg_replace("/\s+/", ' ', preg_replace("/(\r\n|\r|\n)/", " ", $str));

        if (strlen($str) <= $n)
        {
            return $str;
        }

        $out = "";
        foreach (explode(' ', trim($str)) as $val)
        {
            $out .= $val.' ';
            if (strlen($out) >= $n)
            {
                return trim($out).$end_char;
            }
        }
    }
}
?>

inove/index.php 中

			<?php the_content(__('Read more...', 'inove')); ?>

替换为

<?php print character_limiter($post->post_content,1200); ?> <p> </p>
<p><a href="<?php the_permalink() ?>"><strong>继续阅读全文>></strong></a></p>

这个1200可以自己定义,想把摘要显示多一些就增大。

如果你使用了google-syntax-highlighter 插件, 会出现“继续阅读全文” 出现在代码段里面的问题, 如图

wordpress 首页文章显示摘要_第1张图片

下面一片文章挺好的,但是上面的那一片文章就出现了错乱的问题。

在上面functions.php中修改的代码中

 $out .= $val.' ';

前面加上一句,

if (strpos($val, '<pre') === 0){
               return trim($out).$end_char;
            }

就是发现了如果<pre  提前返回。

前提是你的代码都是圈在 <pre name="code" class="java"></pre>这样的标记中的

你可能感兴趣的:(wordpress 首页文章显示摘要)