你的位置:首页 > ASP.net教程

[ASP.net教程]wordpress对显示某分类目录的文章列表页时对单个文章显示字数限制和省略


wordpress会在对应的此类列表页面模板中,遍历输出每篇文章的信息,缩略图,作者,正文,标题等,

输出具体的正文的部分 使用这样一句

<?php the_content(''); ?>

默认通过在页面调用这个函数将完整输出wordpress的正文

但是如果我们需要在一个显示某分类的全部文章的页面中,不输出全部的单个文章的正文呢,这种需求很常见,我们让它在其下显示一个按钮,链到单独文章的详情页去

 

首先可以使用 <!--more--> 标签,在编辑 单独的每个文章时, 编辑器上的功能区除了常见的加粗 调整字号外 还有一个插入more标签,实际上是在纯文本模式中插入了<!--more-->

通过插入这个在页面上不会显示的标记,在对应的分类的文章列表中显示的正文内容将不会包含<!--more-->之后的文本内容

 

其次,我们去改代码吧.

一般主题里通常会使用 index.php、archive.php或category.php文件来显示这种某一类的列表页,找到用来显示此类文章的模板文件

将 <?php the_content(); ?>  替换为   <?php the_excerpt(); ?>   因为wordpress 有提供这样直接显示摘要的方法,如果没有定义摘要

他会截取正文的内容部分显示

常见的主题里通常还会与条件语句一起连用

<?php   if ( is_category() || is_archive() ) {      the_excerpt();    }    else {     the_content();    } ?> 

这样就能一次更改掉使此类文章列表的所有文章显示需要的正文摘要

此外wordpress v2.9后(目前2015年是v4.3了)还可修改具体摘要显示的字数限制,在使用主题的functions.php中增加函数

function new_excerpt_length($length) {   return 100;  }  add_filter('excerpt_length', 'new_excerpt_length'); 

默认情况下,摘要之后的文章内容显示为“[...]”。如果没有,
那么同样在functions.php可加入指定的表示省略了的符号

function new_excerpt_more($more) { return '%u2026';  } add_filter('excerpt_more', 'new_excerpt_more'); 

WP 2.8及之前的版本的可使用的代码为: 

function new_excerpt_more($excerpt) {   return str_replace('[...]', '...', $excerpt); }add_filter('wp_trim_excerpt', 'new_excerpt_more');