为wordpress添加碎语页面

早想给博客弄个发“说说”的页面,方便记录一些零碎的事情。早先了解过很多方法了,但是用起来都不爽,后来在知乎上发现了kouss的教程。按照他的教程我完成了现在的碎语页面,基本实现了我想要的功能,由于原来kouss的教程很简单,写的并不是很详细,我这里为了记录一下修改方法也顺便分享给有需要的人。

1、替换文件

将主题的index.php文件复制出来,重命名为category-xx.php,放置到主题根目录。

注意:xx为自定义,需要跟后续步骤的分类别名统一。

2、新建分类

新建一个文章分类,用来区别说说和文章,分类的别名请与步骤1的xx保持一毛一样。

这样发布说说的时候选择这个分类就可以了,说到这里实现原理大家应该知道了。

3、首页隐藏说说文章

为了美观性,说说肯定不适合出现在首页,所以需要设置首页隐藏,隐藏的方法有很多种,建议使用修改functions的方法隐藏说说分类,否则会影响首页的正常显示。代码贴出来

function exclude_category_home( $query ) {
if ( $query->is_home ) {//是否首页
$query->set( ‘cat’, ‘-1, -2’ ); //排除的指定分类id
}
return $query;
}
add_filter( ‘pre_get_posts’, ‘exclude_category_home’ );

4、修改页面布局

由于原始的布局是由index而来的,一般首页展示的都是摘要内容,不能显示文章样式,也不能正常显示图片,这个问题由于原来的教程里没有提及,我研究了老半天代码,终于测试成功了。可能每个主题的代码不尽相同,我说说我为什么这么替换,仅供参考。

<div class=”post-body”>
<?php if($has_thumbnail) :?>
<div class=”post-thumbnail”><a href=”<?php the_permalink() ?>” rel=”bookmark”><img src=”<?=$thumbnail[“src”];?>” alt=”<?php the_title();?>” /></a></div>
<div class=”post-content”>
<?php echo “<p>” . mb_strimwidth(strip_tags(apply_filters(‘the_content’, $post->post_content)), 0, 295,”…”). “</p>”;?>
</div>
<?php else :?>
<div class=”post-content”>
<?php echo “<p>” . mb_strimwidth(strip_tags(apply_filters(‘the_content’, $post->post_content)), 0, 500,”…”). “</p>”;?>
</div>

**这是原index的文章摘要部分的代码,我判断DIV内可以替换成文章页(single.php)的正文区域代码,替换后如下:

<div class=”post-body”>
<?php the_content(”); ?>
</div>

替换后,说说页面显示的就不是文章摘要了,而是以正文的形式显示文章,格式什么的自然就能显示出来了。

5、页面美化

最后一步就是美化页面了,使用原来的css肯定是不够美观的,而且说说页面的css最好不要跟index的css一样,否则后期修改很麻烦的了。至于如何美化,就得根据自己的主题来了,我这里就不赘述了。

6、后台美化

由于发说说的时候并不需要填写文章标题,这样一来说说多了多话后台文章列表会出现很多没有标题的文章,影响操作。可将下列代码插入functions文件,会自动提取说说内容为标题,方便辨别。

//文章标题自动填充
function filter_post_empty_title($title){
$format = get_post_format();
if($title == $post_id || $title == ”){
$str = get_post($id)->post_content;
$str2=mb_strimwidth(strip_tags($str),0,50,”..”);
$title = ‘ 说说@ ‘. $str2;
}
return $title;
}
add_filter(‘the_title’,’filter_post_empty_title’);
add_filter(‘get_the_title’,’filter_post_empty_title’);