站点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/​

 


--------------------- 
作者:我在地球村--做个有意思的人