在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后台 – 设置 – 阅读里调整博客页面至多显示文章篇数。