站点shares.club建好后,查看主页时,发现虽然设置了只展示5篇文章以及feed中浏览显示摘要而不是全文,但是主页还是对每篇文章进行了全文显示,这样的体验非常差,必须把第一篇看完才能浏览第二篇。为此,决定一定要改个简洁的方式来展示主页。由于本人从未学习过PHP相关的知识,所以虽然可能是几句话的事,但是对初次接触的人来说,还是很难,事后事实也如此。曲折经历如下:

首先在百度上查找了相关方法,得出的结果大多是安装插件,或者插入几段代码,而且写的非常不标准,都是反复转摘的文章,有些原文站点甚至已经关闭了,无从考究,而且时间大多已经是5年前的文章,WordPress版本都不知道更新了多少个!只能算是部分正确,也许是我设置不对,但是如果你看到本文了,相信你也已经尝试了很多方法了!最后还是通过强大的谷歌,直接搜不来前两篇文章就能解决问题,不得不说,还是谷歌的结果更切题,可惜百度了!

说明:本人使用的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/

 

--------------------- 
作者:我在地球村--做个有意思的人 
来源:CSDN 
版权声明:本文为博主原创文章,转载请附上博文链接!

posted on 2022-07-05 18:12  我在全球村  阅读(317)  评论(2编辑  收藏  举报