自从新启用了W1这个主题,经常有淫问怎么好久没更新了,或是发现文章有沙发,速度占了却是好久以前的文章。这里我做下说明:我是故意的!这个主题与其它顺序按时间先后展示博客内容的主题不太一样,具体是这样的:
首页顶部的slider循环展示的是最新三篇文章 + 一篇随机文章,并不是推荐的什么featured post,所以第一次来的朋友也许会被搞晕。。。下面的部分是排除了以上四篇后剩下的文章,按时间排序,点MORE无限免刷新载入。
先说说我这样做的理由,基于方面的考虑
1、旧文章真的可以翻出来晒晒太阳。你知道的,博客这种形式,时间越久,老文章越不见天日,很少有人去看。当然在适当的地方插入随机文章可以吸引访客,但我觉得吸引不如误导主动去点击,目前有好几个人被骗进去抢了SF,哈哈
2、顶部不能全放随机文章,考虑到SEO的缘故,我要保证最新的文章必须在页面的最前面,加快收录。随机文章放得过多也会使访客厌烦,所以我是3+1的模式
3、slider下面部分,这一般是没有订阅,直接过来打开网页或者没事过来转转的朋友。他们最喜欢在第一篇文章留言(因为有很多人不看顶部slider),我不喜欢新文章无关留言在前面。仔细看,首页下面的文章按时间看其实是第三篇日志。好处也是有的,更新的新文章经历了两次关注,在埋没之前放在吸引人的地方增加留言。
下面是代码和实现方法:
<?php $new_query = new WP_Query('showposts=3');while ($new_query->have_posts()) : $new_query->the_post();$do_not_duplicate[] = $post->ID;?> <!--循环内容一--> <?php endwhile; ?> <?php $new_query = new WP_Query('showposts=1&orderby=rand&post_not_in=array($do_not_duplicate)');while ($new_query->have_posts()) : $new_query->the_post();$do_not_duplicate[] = $post->ID;?> <!--循环内容二--> <?php endwhile; wp_reset_query();?> <?php if (have_posts()) : while (have_posts()) : the_post(); ?> <?php if (in_array($post->ID, $do_not_duplicate)) continue;update_post_caches($posts); ?> <!--主循环内容--> <?php endwhile; else: ?> <?php endif; ?>
用了三次循环,注意上面的代码中用了$do_not_duplicate[]数组用来存储已经输出过的内容,避免重复。
也可以进一步优化下,比如不是输出随机文章,而是输出留言最少的文章,用WP_Query很容易控制参数,按评论数排序就好了。可以去看看官方codex对WP_Query的介绍,这里就不再说明了。