在wordpress主题的根目录下找到index.php或是archive.php页面,通常在分类页、标签页、作者页都是通过archive.php来调用内容。我们确认了哪个页面为你的wordpress主题文件主要控制构成后,就可以开始可以下query_posts函数了。它可以帮助你实现文章的排序或是文章的置顶排除等功能。
1
2
3
4
5
6
7
8
9
10
11
12
|
<?php
// query_posts函数
query_posts(‘orderby=comment_count’);
// 主循环
if ( have_posts() ) : while ( have_posts() ) : the_post();
..
endwhile; else:
..
endif;
// 重置query
wp_reset_query();
?>
|
我们在index.php中查找if (have_posts())或while (have_posts()),在前面添加query_posts函数即可。不过以上方式可能会导致首页无法分页,那你可以将query_posts函数改成这样的行式:
1
2
3
4
5
6
7
8
|
// 下面这一行代码是必须的,不然你的首页不能分页
$paged = (get_query_var(‘paged’)) ? get_query_var(‘paged’) : 1;
$args = array(
// 这里以下面的方式添加query_posts参数,具体参数可以参加官方文档
‘orderby’ => comment_count,
‘paged’ => $paged
);
query_posts($args);
|
下面介绍几款常见的query_posts函数用法,你可以直接应用到你的主题里。也希望对你的wordpress主题开发有所帮助。
一、Wordpress只显示自定义字段的文章
在wordpress建站开发时,只调用某个自定义字段的文章,且该字段的值来设定文章顺序,那么你可以参考以下代码
1
2
3
4
5
6
7
8
|
$paged = (get_query_var(‘paged’)) ? get_query_var(‘paged’) : 1;
$args=array(
‘meta_key’ => ‘sort’,
‘orderby’ => ‘meta_value_num’, // 须 WordPress 2.8 及以上版本
‘paged’ => $paged,
‘order’ => DESC
);
query_posts($args);
|
其实这种方式你可以看成怎样只显示我推荐的文章,含有自定义字段的文章即我们的推荐文章。
二、怎样让Wordpress排除某分类的文章
从我们的wordpress主循环里排序某个分类的文章,可以使用到category__not_in函数:
1
2
3
4
5
6
7
|
$paged = (get_query_var(‘paged’)) ? get_query_var(‘paged’) : 1;
$args = array(
// 2, 6就是你不想显示的分类ID,多个用半角逗号隔开
‘category__not_in’ => array(2, 6),
‘paged’ => $paged
);
query_posts($args);
|
如何设置仅显示某分类文章呢,可以将category__not_in改成category__in。
三、Wordpress文章排序功能
1
2
3
4
5
6
7
|
$paged = (get_query_var(‘paged’)) ? get_query_var(‘paged’) : 1;
$args = array(
// 以下代码中的title就是orderby的值,按标题排序
‘orderby’ => title,
‘paged’ => $paged
);
query_posts($args);
|
根据orderby的值不同,可以让文章按照很多种方式进行排序,下面是列举几个常见的值及其对应的排序方式:title:按标题;date:按发布日期;modified:按修改时间;ID:按文章ID;rand:随机排序;comment_count:按评论数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
orderby排列顺序可选的值:
‘author’ —— 按作者数值编号排序
‘category’ —— 按类别数值编号排序
‘content’ —— 按内容排序
‘date’ —— 按创建日期排序
‘ID’ —— 按文章编号排序
‘menu_order’ —— 按菜单顺序排序。仅页面可用。
‘mime_type’ —— 按MIME类型排序。仅附件可用。
‘modified’ —— 按最后修改时间排序。
‘name’ —— 按存根排序。
‘parent’ —— 按父级ID排序
‘password’ —— 按密码排序
‘rand’ —— 任意排序结果
‘status’ —— 按状态排序
‘title’ —— 按标题排序
‘type’ —— 按类型排序
|
1
|
四、WordPress只显示指定ID的文章
|
wordpress调用指定ID为2,4,6的文章,可以使用以下代码:
1
2
3
4
5
6
7
|
$paged = (get_query_var(‘paged’)) ? get_query_var(‘paged’) : 1;
$args = array(
// 以下代码中的2,4,6就是文章的ID
‘post__in’ => array(2,4,6),
‘paged’ => $paged
);
query_posts($args);
|
如需要排除ID为2,4,6这几篇文章,可以将 post__in 改成 post__not_in 。
1
|
五、WOrdpress取消置顶文章的置顶功能
|
取消wordpress置顶文章的顶部显示功能,让他们按正常的时间顺序排列,可以使用以下代码
1
2
3
4
5
6
|
$paged = (get_query_var(‘paged’)) ? get_query_var(‘paged’) : 1;
$args=array(
‘paged’ => $paged,
‘caller_get_posts’ => 1
);
query_posts($args);
|
1
|
六、列出所有WORDPRESS状态的文章
|
WordPress的文章状态有很多种,包括已发布、草稿、已删除、私人的、定时发布的等等,如果你想将这些文章都统统显示出来,那么可以这样:
1
2
3
4
5
6
|
$paged = (get_query_var(‘paged’)) ? get_query_var(‘paged’) : 1;
$args = array(
‘post_status’ => array(‘publish’, ‘pending’, ‘draft’, ‘future’, ‘private’, ‘trash’),
‘paged’ => $paged
);
query_posts($args);
|
post_status参数可以控制具体的文章状态,值包括pending(待审)、publish(已发布)、draft(草稿), future(定时), private(私有), trash(已删除)。七、控制文章的数量
如果你想控制要显示的文章数量,可以使用showposts参数:
1
2
3
4
5
6
7
|
$paged = (get_query_var(‘paged’)) ? get_query_var(‘paged’) : 1;
$args = array(
// 控制只显示10篇文章,如果将10改成-1将显示所有文章
‘showposts’ => 10,
‘paged’ => $paged
);
query_posts($args);
|
如需控制首页、分类页等每各分页显示的文章数量,可通过WordPress后台 – 设置 – 阅读里调整博客页面至多显示文章篇数。
来源:http://www.wazhuti.com/1956.html