wordpress文章置顶不改变文章排序实现方法
发布:smiling 来源: PHP粉丝网 添加日期:2014-03-21 21:50:04 浏览: 评论:0
wordpress博客系统中如果我们文章置顶那么文章置顶的文章排序会发生变化,那么我希望实现的功能是文章置顶不改变文章排序了,下面我找到一站长写的方法现在分享给各位.
文章置顶不排序,query_posts方法的代码如下:
- <?php
- $display_categories = get_option(‘swt_cat_exclude’);
- $limit = get_option(‘posts_per_page’);
- $paged = (get_query_var(‘paged’)) ? get_query_var(‘paged’) : 1;
- $sticky = get_option(‘sticky_posts’);
- $args = array(
- ‘cat’ =–> $display_categories,
- ‘showposts’ => $limit=11,
- //忽略sticky_posts,即不置顶(不将置顶文章提至最前),但是输出置顶文章
- ‘ignore_sticky_posts’ => 1,
- //排除置顶文章,不输出置顶文章。这一句和上一句只留一句即可,根据自己需要处理
- ‘post__not_in’ => $sticky,
- ‘paged’ => $paged
- );
- query_posts($args);
- if (have_posts()) :
- while (have_posts()) : the_post();
- /* 此处自行添加输出内容,如标题、日期、作者、摘要等 */
- endwhile;
- endif;
- ?>
这段代码是在网上找到的一段处理与过滤置顶文章的办法,但是会导致之前说的搜索、标签、分类页面只显示首页内容的问题,为了解决这个问题,向数组内加入了s、tag等查询条件,虽然能够正常的查询到标签页与搜索页的内容,但是又会导致分类页出现问题,因此只能另寻他法,
仔细的查阅wordpress的方法说明,发现query_posts方法可以通过全局变量$query_string来设置查询过滤,并且不影响其他的查询结果,代码如下:
- global $query_string;
- query_posts( $query_string . ‘&ignore_sticky_posts=1′ );
设置显示/不显示置顶文章
在默认主题下,如果将某篇文章设置成置顶后,会将该文章提至首页文章列表最前显示,此时,可以添加一个置顶图标或者一个字眼“[置顶]”作为区别,很简单,只需在文章标题的代码附近加上一句代码即可,用函数is_sticky()判断是否为置顶文章,如果是的话就加入相应的图标或者文字,代码如下:
- <?php if(is_sticky()) {echo '<img src="'.get_bloginfo('template_directory').'/images/top.gif" alt="置顶文章" title="置顶文章" />';} ?>
如果要求不高的话,这样也就可以了,已经达到了目的,但是如果你的要求较高,想将置顶文章和普通文章分离开来,想让置顶文章和普通文章有明显区别,如置顶文章只显示标题,而普通文章还要显示更多的内容,可以用下面的办法来实现.
首先,将原来的显示所有文章的代码稍作调整,让其不将置顶文章提至最前,但仍然出现在文章列表中,将以下代码替换到原输出所有文章代码的位置,一般在<?php if (have_posts()):while (have_posts()):the_post(); ?>前,注意,以下代码和原代码有部分重叠,请将不同的关键代码加入相应的位置即可,主要是有注释的那两行,代码如下:
- <?php
- $display_categories = get_option('swt_cat_exclude');
- $limit = get_option('posts_per_page');
- $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
- $sticky = get_option('sticky_posts');
- $args = array(
- 'cat' =--> $display_categories,
- 'showposts' => $limit=11,
- //忽略sticky_posts,即不置顶(不将置顶文章提至最前),但是输出置顶文章
- 'ignore_sticky_posts' => 1,
- //排除置顶文章,不输出置顶文章。这一句和上一句只留一句即可,根据自己需要处理
- 'post__not_in' => $sticky,
- 'paged' => $paged
- );
- query_posts($args);
- if (have_posts()) :
- while (have_posts()) : the_post();
- /* 此处自行添加输出内容,如标题、日期、作者、摘要等 */
- endwhile;
- endif;
- ?>
然后,在适当位置添加只显示置顶文章的代码,一般的话,放在靠前的位置,这样才能体现出置顶的效果嘛,也就是放在显示所有文章列表代码之前,代码如下:
- <?php
- //获取所有置顶文章
- $sticky = get_option('sticky_posts');
- //对这些文章排序, 日期最新的在最上
- rsort($sticky);
- //获取5篇文章
- $sticky = array_slice($sticky, 0, 5);
- //输出这些文章
- query_posts(array('post__in' =--> $sticky, 'ignore_sticky_posts' => 1));
- if (have_posts()) :
- while (have_posts()) : the_post();
- /* 此处自行添加输出内容,如标题等 */
- endwhile;
- endif;
- //此句十分重要,如果不加,可能会造成一些错误,如失去分页翻页效果等
- wp_reset_query();
- ?>
这样的话,基本上已经实现了显示和不显示置顶文章的功能.
Tags: wordpress 文章置顶 文章排序
相关文章
- ·WordPress初级教程1:什么是博客?(2013-11-11)
- ·WordPress初级教程-2: 什么是WordPress?(2013-11-11)
- ·WordPress初级教程-3: WordPress的功能和特点(2013-11-11)
- ·WordPress初级教程-4: 选择WordPress博客的主机和域名(2013-11-11)
- ·WordPress初级教程-5: 安装WordPress(2013-11-11)
- ·WordPress初级教程-6: 本地安装WordPress(2013-11-11)
- ·WordPress初级教程-7: 一个数据库中安装多个WordPress博客(2013-11-11)
- ·WordPress初级教程-8: WordPress控制面板/ Dashboard(2013-11-11)
- ·WordPress初级教程-9: WordPress用户设置/ Users(2013-11-11)
- ·WordPress初级教程-10: WordPress博客配置/ Settings(2013-11-11)
- ·关于wordpress上传图片不显示的原因(2013-11-11)
- ·WordPress程序的脆弱点你知道吗 (2013-11-11)
- ·总结八大Wordpress网站百度收录实现秒收的方法绝招 (2013-11-11)
- ·WordPress如何网站投稿者也可以上传图片(2014-03-18)
- ·WordPress怎么修改新用户注册邮件内容(2014-03-18)
- ·WordPress怎么添加前台注册功能(2014-03-18)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)