当你使用自定义文章类型或自定义主题时,通常会看到使用WP_Query。了解它的工作原理并了解如何自定义它,是非常有帮助的。
codex文档上关于WP_Query的说明
。然后,我们将在WordPress网站中查看WP_Query,并讲解如何使用它来自定义主题。
这是WP_Query在codex上详细介绍的页面:
这个页面首先介绍WP_Query的描述,并展示标准循环和一些替代的方法。
然后,在右侧,它会显示所有不同类型的参数,你可以使用这些参数自定义你希望显示的循环以及应该满足的条件。
例如,如果只想显示某类别的内容,这里有作者参数、分类目录参数或文章和页面参数,文章状态参数,自定义字段参数以及其他许多参数。
自定义循环的不同方法
现在,我们就要进入相应的实战开发了,我们在之前的章节中讲过,WordPress开发最好是在子主题中进行。这是主题的百度网盘下载链接:
[mem]链接:https://pan.baidu.com/s/1nxmn5yT 密码:ozfb[/mem]
下载完成后,解压,我把解压后的所有文件,全部拷贝到 twentyfifteen-child-theme 这个文件夹中
[mem]
然后来到“外观” >> “主题”中,把主题设置为子主题:twentyfifteen-child-theme
因为我们要对 Wp_Query 进行讲解,这里我们再次创建3篇文章:
[/mem]
然后,我在我的网站上添加一个自定义页面(注意这里一定要使用子主题进行开发,如果没有使用,父主题是没有Custom Template模板这个页面属性的):
并通过“外观” >> “小工具”。并确保我有一个页面小工具,以便我可以浏览我的网站看到。
现在,来到网站前台,在小工具挂件区域,可以看到刚刚创建的自定义模板页面。点击进去,看到的是刚刚添加的三篇文章标题:
但是,我们创建页面时,并没有添加页面的正文内容啊,为什么会有这些内容呢?
为什么会有这些内容呢
现在,进入主题 twentyfifteen-child-theme 的文件夹中,并打开page-custom.php,可以在这里看到模板名称”Custom Template”:这是刚刚在创建页面时,“页面属性”下的模板。
<?php
/**
* Template Name: Custom Template /***自定义模板***/
*/
然后,开始一个新的WP_Query:
// The Query
$args = array(/***WP_Query所需的参数***/
'post_type' => 'post',
);
$the_query = new WP_Query( $args ); /***创建WP_Query对象***/
// The Loop
if ( $the_query->have_posts() ) { /***有文章时,输出所有文章的标题***/
echo '<ul>';
while ( $the_query->have_posts() ) {
$the_query->the_post();
echo '<li>' . get_the_title() . '</li>';
}
echo '</ul>';
} else {
// no posts found /***没有文章时,不输出***/
}
使用WP_Query的一个需要注意的地方是:当你在一个页面上使用多个查询时,是需要重新设置post数据,以防其他可能会干扰的循环。
wp_reset_postdata();
在这里,传递给WP_Query的参数是 post_type 为 post 。所以,我们看到它显示的是文章(post)。
如果我们将 post_type 更改为 page :
$args = array(
'post_type' => 'page',
来到网站前台,输出的就是页面的标题
现在,改回为POST。然后让回到WP_Query的文档中,来到“分页”,在这里有一个非常重要的是posts_per_page。它用来设置“要显示的文章的数量”。所以如果我们要添加另外一个参数,我们会把一个逗号,posts_per_page,然后是数字1:
$args = array(
'post_type' => 'post',
'posts_per_page' => 1
来到网站前台,刷新,这里就只会显示一篇文章:
我们也可以自定义显示的顺序。在这里我们看到升序和降序。
$args = array(
'post_type' => 'post',
'order' => "ASC"
来到网站前台,刷新,文章就会按照升序排序:
在这篇关于Wp_Query这篇文档中,还可以看到它很多其它的例子。
所以Wp_Query这个文档还有很多内容,它甚至允许你通过自定义字段进行搜索,并且做了很多来定制的输出方式。我们现在就讲到这里。但是,鼓励大家继续深入了解这些内容,以便你可以了解使用WP_Query定制各种各样的功能。
转载请注明:xuhss » WordPress开发入门07:WP_Query 自定义循环