wordpress置顶文章不改变文章排序的方法
前段时间收到frontopen主题的用户反馈,说置顶文章不但会显示在置顶区域,并且在文章列表中也会显示到最前面。这样造成了两条信息重复显示,体验非常不好。
为了解决这个问题,之前尝试在loop的主循环中插入query_posts()方法,并设置相应的查询条件对文章置顶属性进行过滤。初步测试是成功了,但是随之而来的问题是导致标签页、搜索页、分类页只显示首页内容。
query_posts方法的代码如下:
161718192021<?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来设置查询过滤,并且不影响其他的查询结果。代码如下:
12global $query_string;query_posts( $query_string . ‘&ignore_sticky_posts=1′ );
上一篇:WordPress 调用同分类或指定某分类下的随机文章
webacc.exe是什么文件?webacc.exe是不是病毒
WINSYS.vbs是什么文件?WINSYS.vbs是不是病毒
winssh.exe是什么文件?winssh.exe是不是病毒
wt.exe是什么文件?wt.exe是不是病毒
winsysetm.exe是什么文件?winsysetm.exe是不是病毒
winstrve.exe是什么文件?winstrve.exe是不是病毒
winsysupd7.exe是什么文件?winsysupd7.exe是不是病毒
winsysupd.exe是什么文件?winsysupd.exe是不是病毒
winsysupd2.exe是什么文件?winsysupd2.exe是不是病毒
winsysupd8.exe是什么文件?winsysupd8.exe是不是病毒