wordpress首页文章列表显示摘要

有两种方法:
1.使用 wp-utf8-excerpt 安装后,什么都不用设置。
2.修改content.php

20190514更新:使用the_excerpt()代替the_content()函数

我用的是twentysixteen主题。对应content.php
对应的是twentysixteen_excerpt()和the_content()
我每篇文章都写摘要,所以干脆把the_content()删除了。
下面是删除的代码:

<div class="entry-content">
		<?php
			/* translators: %s: Name of current post */
			the_content(
				sprintf(
					__( 'Continue reading<span class="screen-reader-text"> "%s"</span>', 'twentysixteen' ),
					get_the_title()
				)
			);

			wp_link_pages(
				array(
					'before'      => '<div class="page-links"><span class="page-links-title">' . __( 'Pages:', 'twentysixteen' ) . '</span>',
					'after'       => '</div>',
					'link_before' => '<span>',
					'link_after'  => '</span>',
					'pagelink'    => '<span class="screen-reader-text">' . __( 'Page', 'twentysixteen' ) . ' </span>%',
					'separator'   => '<span class="screen-reader-text">, </span>',
				)
			);
			?>
	</div><!-- .entry-content -->

如果你稍微懂得wordpress的模板修改,肯定对这两个函数不陌生,the_excerpt()是输出文章的摘要,不同的主题这个摘要的输出格式和字数可能不同,上面也讲了,它是先判断你是否有手动输入的摘要,如果没有再将文章内的前面部分输出,而且是不换行的输出。而the_content()就是全文输出了。使用这种方法会让原来的首页相当干净,不仅文字急剧减少,而且没有图片,最痛苦的是没有分段。(下文会讲解如何解决这种没有分段的情况)因此,这种方法也显得太傻瓜了。

原文:

1.使用 wp-utf8-excerpt 安装后,什么都不用设置。

下面是对这个插件的描述,我没有做下面的操作,记录下来以备不时之需。

关于WP的摘要显示问题。网络上有很多关于这样的文章,大都是天下文章一大抄,清一色的全是更改index.php中的<?php the_content();?> 为 <?php the_excerpt();?> ,但是WP的the_excerpt();函数对中文的支持不是很好,导致了调用此函数之后仍然是显示全文的现象。  
解决方法:       
1. 首先安装插件wp-utf8-excerpt,这个插件出自 http://myfairland.net/wp-utf8-excerpt/ 这篇文章。     
2. 在WP的插件的选项栏中启用此插件。     
3.修改index.php文件 

将<?php the_content();?>        
更改为:        
<?php
        if (is_single() or is_page()) {
            the_content();
        } else {
            the_excerpt();
        } 
?> 

这样修改之后就可以实现首页文章的摘要显示了。   上述代码首先判断新打开的页面是否为单篇具体文章,如果是,则the_content()显示全文,如果不是,则利用the_excerpt()显示摘要。   插件官方下载地址 :http://downloads.wordpress.org/plugin/wp-utf8-excerpt.zip 

2.修改content.php

说明:本人使用的WordPress主题是twentysixteen,其它主题应该类似。

添加过滤和文章截取函数

在主题-编辑-主题文件-模板函数function.PHP文件末尾 添加下面的函数:

/**
 * Display the content in short words
 */
function dm_strimwidth($str ,$start , $width ,$trimmarker ){
 $output = preg_replace('/^(?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$start.'}((?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$width.'}).*/s','\1',$str);
 return $output.$trimmarker;
}
/*控制摘要字数*/
function new_excerpt_length($length) {
return 150;
}
function new_excerpt_more($more) {
	global $post;
	return '<a href="'. get_permalink($post->ID) . '">......阅读更多</a>';
}
add_filter('excerpt_more', 'new_excerpt_more');

设置content内容的展示方式

在主题-编辑-主题文件-template-parts-content.php文件末尾替换下面的内容:

原文:

<div class="entry-content">
		<?php
			/* translators: %s: Name of current post */
			the_content( sprintf(
				__( 'Continue reading %s', 'twentysixteen' ),
				the_title( '<span class="screen-reader-text">', '</span>', false )
			) );
			wp_link_pages( array(
				'before'      => '<div class="page-links"><span class="page-links-title">' . __( 'Pages:', 'twentysixteen' ) . '</span>',
				'after'       => '</div>',
				'link_before' => '<span>',
				'link_after'  => '</span>',
				'pagelink'    => '<span class="screen-reader-text">' . __( 'Page', 'twentysixteen' ) . ' </span>%',
				'separator'   => '<span class="screen-reader-text">, </span>',
			) );
		?>
	</div><!-- .entry-content -->

替换后为:

<div class="entry-content">
		<?php
		if ( is_single() ) :
			/* translators: %s: Name of current post */
			the_content( sprintf(
				__( 'Continue reading %s', 'twentysixteen' ),
				the_title( '<span class="screen-reader-text">', '</span>', false )
			) );
			wp_link_pages( array(
				'before'      => '<div class="page-links"><span class="page-links-title">' . __( 'Pages:', 'twentysixteen' ) . '</span>',
				'after'       => '</div>',
				'link_before' => '<span>',
				'link_after'  => '</span>',
				'pagelink'    => '<span class="screen-reader-text">' . __( 'Page', 'twentysixteen' ) . ' </span>%',
				'separator'   => '<span class="screen-reader-text">, </span>',
			) );
			else :
			/* translators: %s: Name of current post */
			the_excerpt( sprintf(
				__( 'Continue reading %s', 'twentysixteen' ),
				the_title( '<span class="screen-reader-text">', '</span>', false )
			) );
			wp_link_pages( array(
				'before'      => '<div class="page-links"><span class="page-links-title">' . __( 'Pages:', 'twentysixteen' ) . '</span>',
				'after'       => '</div>',
				'link_before' => '<span>',
				'link_after'  => '</span>',
				'pagelink'    => '<span class="screen-reader-text">' . __( 'Page', 'twentysixteen' ) . ' </span>%',
				'separator'   => '<span class="screen-reader-text">, </span>',
			) );
			endif;
		?>
	</div><!-- .entry-content -->

那些坑
1,填写摘要无效,不显示

根据网上提供的方法,补充了文章的在编辑时可选填的摘要,可是起初设置的方法虽然显示了“阅读更多”的按钮,但是也没有按照摘要内容进行显示或者要不就是正文仍然在显示,二者出现了重复!一般写一点文章,谁还专门去写摘要呀,肯定直接截取原文更方便啦!

参考文章:http://www.matrudev.com/post/twenty-sixteen-summary-excerpt/

缺点:

我希望是只显示摘要,不显示内容。目前相当于显示两次摘要,不美观,以后慢慢解决。

作者:

喜欢围棋和编程。

 
发布于 分类 百科标签

发表评论

电子邮件地址不会被公开。