完善的解决方案实现WordPress让聚合模块优先显示置顶文章

2015-09-11 13:10 栏目:技术开发 查看(14011)

只要了解互联网的人对WordPress并不陌生,因为它在全球互联网中占据着极其重要的地位,据统计全球活跃站点中超过20%是基于WordPress构建的。虽然是老外的东西,但在国内也同样收欢迎,比如淘宝、腾讯的内部团队的博客都是基于WordPress做的。对,WordPress就是一款简单的博客开源程序,但因为太多人用了,因此也有太多人一起去完善他,以至于它拥有非常丰富的API,只要有足够的编程开发能力,就算是基于它完成门户、论坛、商城等等类型的应用。我们微构网络开发的花见网就是基于WordPress做的,也算是一个轻型门户了。

当然实际上我们用得更多的还是用它来做个人的博客,其次就是做企业网站;我可以这么说,它完全满足95%以上企业网站的需求。而企业网站经常有这样一种需求:把重要的信息推荐到前面。其实就是一个简单的需求。

而WordPress默认有该功能(置顶)。官方模版中也保留有这个功能的作用效果,甚至第三方的开发者做的也拥有这个。但也是因为WordPress是为博客而生的,默认的该功能其实非常简单,就是在首页中把置顶的显示在前面。而且博客一般就是一个大列表,然后边栏信息。而企业网站的首页及内页边栏往往就可能有一些聚合的信息模块,比如最新的文章、推荐文章、推荐产品等等。

那么诸如这样的需求的时候改怎么比较完善的解决呢?我知道网上有很多关于置顶的文章,但我觉得那些文章不够实用,或者说太千遍一律了。而我们做过了,就把一些简单的思路分享出来,也来充实一下与之相关的内容。

ddd

以上就是我们之前做过的一个项目的某个位置的截图,图中是两个聚合模块。而红线框里面的数据就是置顶的。那么就其中的一个模块来说,具体的需求就是这样的:读取5条数据,如果有置顶的先显示置顶的,如果置顶的超过5条也只显示最新的5条置顶文章,如果置顶的不足5条,那么接下来显示其他最新的(里面不重复已经置顶的),假如置顶的文章ID有1、2、3共3篇,那么下面接着显示没有置顶的2篇文章。

与其说上面是需求,还不如说是分析问题的想法,其实个人感觉这样的想法是相对比较完善的。那么我们就贴出基本的核心代码来演示这个需求实现过程。代码如下:

/*首先来正儿八经显示置顶的*/
//$args的解释,其实这个解释在网上已经很多了,这里就不废话了,依次是约束栏目、只读取置顶的、最多显示多少条
$args=array('cat' => $catid,'post__in' => get_option('sticky_posts'),'showposts' => 5)
//定义一个变量$ding把读取出来的资源数据给它
$ding=query_posts($args);
//非常常规的循环
if(have_posts()) :while(have_posts()) : the_post();
//输出html等内容....
endwhile;wp_reset_query();endif;
/*嘿,这块程序跑了一半,如果不够,我们还得继续显示普通文章呀*/
//下面这个$num很简单,但我觉得它才是我们这里这段代码的精髓!!!
$num=5-count($ding);
//这里的条件第一个依然是只要特点分类的,当然如果是全部栏目内容这个可以不要,第二个就是排除置顶的,第三个嘛就是还剩下多少需要这些普通文章来凑数的
$args2=array('cat' => $catid,'post__not_in' =>get_option('sticky_posts'),'showposts' => $num);
query_posts($args2);
//非常常规的循环又开始了
if(have_posts()) : while (have_posts()) : the_post();
//输出html等内容....
endwhile;  wp_reset_query(); endif;

上述代码就是实现上面截图所描述需求的核心代码,如果你有相同需求可以直接把代码替换上去使用就可以了,这个跟网上很多文章不同的就是,网上的可能只是相当于一个官方的开发文档,其实很多也确实就是翻译官方的文档来的,至于怎么使用有可能作者自己都搞不清楚。

与我们的项目经理联系
扫二维码与项目经理沟通

我们在微信上24小时期待你的声音

解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流

转载请注明出处:完善的解决方案实现WordPress让聚合模块优先显示置顶文章 - 微构网络
分享: