让WordPress的Post和Page支持<!–more–>标签
当我们在wordpress中使用<!–more–>标签截断文章时,在首页、分类、标签和存档等页面的文章内容都是显示<!–more–>之前的文章,而在文章(Post)和页面(Page)中时,则忽略<!–more–>标签,显示全文。
这当然是合理的,你总不可能让访客在你的最终文章页还瞅着摘要发呆。
但对主题开发者来说,经常会使用一个Page Template来罗列一个符合查询条件的文章列表。比如下面这段代码返回分类ID为3下的所有文章。
<?php query_posts('cat=3'); while(have_posts): the_post(); ?>
<h2><?php the_title(); ?></h2>
<?php the_content(); ?>
<?php endwhile; ?>
但在这份文章列表里面,the_content()函数将始终输出全文,不管你是否在文章中使用了more标签。因为WordPress只知道这是一个Page页面,要显示全文,而不会智能的根据你是否使用了query_posts()或新建了一个WP_Query对象来决定是否支持more标签。
P.S:说来惭愧,做了这么长时间的wordpress主题,我直到今天才发现这个问题。因为我个人比较喜欢“纯文字摘要列表”的方式,以往需要创建文章列表时,都是使用自动截取文章字符的方式。但正在进行的一个项目,客户要求输出html全文,然后手动插入more标签截断。
废话说了半天,其实解决方法简单的不行,请看代码(via weblogtoolscollection):
<?php global $more; $more = false; ?>
<?php the_content('Continue Reading'); ?>
<?php $more = true; ?>
说明: 在the_content()函数前声明一个全局变量$more并且设置为flase就可以了。如果你希望在内容显示完成后又回到原来的状态,那在后面再把$more变量设置为true。



11:10 上午
11:42 上午
11:20 上午
帕兰,看你的博客首页,按某个分类的子分类输出文章列表,是可以使用一个循环语句输出呢?还是要一个分类一个分类的输出啊?
哦,有点说的不明白,就是,比如:
我要输出 热门应用里边的所有子分类(wordpress,firefox,Adobe Air)及其文章前几篇的列表,是可以一个循环(指定父级分类)搞定,还是需要一个一个子分类的输出啊?
谢谢。本来想给你发邮件的,但是,订阅你的站这么久了,还是没发现你的联系方式诶。呵,关于页面在加个联系方式之类的就不那么自闭了,呵。
10:36 下午
代码好像不能显示来着,诶…
10:45 下午
我弄好了,谢谢…
11:49 下午
不错的小技巧
10:01 上午
windows live writer 轻松实现
10:02 上午
哦,没看完,我弄错了
3:33 下午
长见识了
5:44 下午
不错。实用的功能。
11:55 下午
细节决定成败!
12:35 上午
挺实用的技巧,不错,我也试试
11:03 下午
请问一下,这是个要添加到哪个文件的中呢?可不可以说下具体的路径,刚好也碰到这个问题