摘要:前段时间收到frontopen主题的用户反馈,说置顶文章不但会显示在置顶区域,并且在文章列表中也会显示到最前面。这样造成…
前段时间收到frontopen主题的用户反馈,说置顶文章不但会显示在置顶区域,并且在文章列表中也会显示到最前面。这样造成了两条信息重复显示,体验非常不好。
为了解决这个问题,之前尝试在loop的主循环中插入query_posts()方法,并设置相应的查询条件对文章置顶属性进行过滤。初步测试是成功了,但是随之而来的问题是导致标签页、搜索页、分类页只显示首页内容。
query_posts方法的代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
<?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来设置查询过滤,并且不影响其他的查询结果。代码如下:
1
2
|
global $query_string;
query_posts( $query_string . ‘&ignore_sticky_posts=1′ );
|
来源:http://www.wazhuti.com/707.html