WordPress开发入门07:WP_Query 自定义循环

开发入门 xuhss 1023℃ 0评论

当你使用自定义文章类型或自定义主题时,通常会看到使用WP_Query。了解它的工作原理并了解如何自定义它,是非常有帮助的。

codex文档上关于WP_Query的说明

。然后,我们将在WordPress网站中查看WP_Query,并讲解如何使用它来自定义主题。

这是WP_Query在codex上详细介绍的页面:

点我跳转

这个页面首先介绍WP_Query的描述,并展示标准循环和一些替代的方法。

然后,在右侧,它会显示所有不同类型的参数,你可以使用这些参数自定义你希望显示的循环以及应该满足的条件

wp query xuhss.com01 - WordPress开发入门07:WP_Query 自定义循环

例如,如果只想显示某类别的内容,这里有作者参数、分类目录参数或文章和页面参数,文章状态参数,自定义字段参数以及其他许多参数。

自定义循环的不同方法

现在,我们就要进入相应的实战开发了,我们在之前的章节中讲过,WordPress开发最好是在子主题中进行。这是主题的百度网盘下载链接:

[mem]链接:https://pan.baidu.com/s/1nxmn5yT 密码:ozfb[/mem]

下载完成后,解压,我把解压后的所有文件,全部拷贝到 twentyfifteen-child-theme 这个文件夹中

[mem]

wp query xuhss.com02 - WordPress开发入门07:WP_Query 自定义循环

然后来到“外观” >> “主题”中,把主题设置为子主题twentyfifteen-child-theme

wp query xuhss.com03 - WordPress开发入门07:WP_Query 自定义循环

因为我们要对 Wp_Query 进行讲解,这里我们再次创建3篇文章:

wp query xuhss.com5  - WordPress开发入门07:WP_Query 自定义循环

[/mem]

然后,我在我的网站上添加一个自定义页面(注意这里一定要使用子主题进行开发,如果没有使用,父主题是没有Custom Template模板这个页面属性的):

wp query xuhss.com6  - WordPress开发入门07:WP_Query 自定义循环

并通过“外观” >> “小工具”。并确保我有一个页面小工具,以便我可以浏览我的网站看到。

wp query xuhss.com7  - WordPress开发入门07:WP_Query 自定义循环

现在,来到网站前台,在小工具挂件区域,可以看到刚刚创建的自定义模板页面。点击进去,看到的是刚刚添加的三篇文章标题:

wp query xuhss.com8  - WordPress开发入门07:WP_Query 自定义循环

但是,我们创建页面时,并没有添加页面的正文内容啊,为什么会有这些内容呢

为什么会有这些内容呢

现在,进入主题 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',

来到网站前台,输出的就是页面的标题

wp query xuhss.com9  - WordPress开发入门07:WP_Query 自定义循环

现在,改回为POST。然后让回到WP_Query的文档中,来到“分页”,在这里有一个非常重要的是posts_per_page。它用来设置“要显示的文章的数量”。所以如果我们要添加另外一个参数,我们会把一个逗号,posts_per_page,然后是数字1:

$args = array(
        'post_type' => 'post',
        'posts_per_page' => 1

来到网站前台,刷新,这里就只会显示一篇文章:

wp query xuhss.com91 - WordPress开发入门07:WP_Query 自定义循环

我们也可以自定义显示的顺序。在这里我们看到升序降序

$args = array(
        'post_type' => 'post',
        'order' => "ASC"

来到网站前台,刷新,文章就会按照升序排序:

wp query xuhss.com92 - WordPress开发入门07:WP_Query 自定义循环

在这篇关于Wp_Query这篇文档中,还可以看到它很多其它的例子。

所以Wp_Query这个文档还有很多内容,它甚至允许你通过自定义字段进行搜索,并且做了很多来定制的输出方式。我们现在就讲到这里。但是,鼓励大家继续深入了解这些内容,以便你可以了解使用WP_Query定制各种各样的功能。

转载请注明:xuhss » WordPress开发入门07:WP_Query 自定义循环

喜欢 (5)

您必须 登录 才能发表评论!