前面我们在循环里使用了 WordPress 默认的查询来显示相关的内容,默认的查询会使用当前页面的路径作为查询的参数,然后到数据库里帮我们找到相应的内容。也就是在首页上会显示所有首页上的东西,在分类页面会显示属于这个分类的文章,在文章页面只会显示当前这个文章的内容。
我们也可以自己定义这个查询,你可以决定要找的内容是什么类型,属于哪个分类,拥有什么标签,怎么样排序,显示的数量等等。
这里我们要用到的是 WordPress 的 WP_Query ... 在下面这个地址里,你可以阅读它的使用参数说明。http://codex.wordpress.org/Class_Reference/WP_Query
下面我们来演示一下 ...
在 index.php 这个模板文件里 ... 我们改造一下之前创建的循环 ... 首先,我们要新建一个查询 ...
在这段循环的上面 ... 输入 <?php new WP_Query(); ?> ,在 WP_Query() 的里面,我们要设置一些相关参数的值,也就是你要找的东西和怎么样处理这些东西等等。
我们先把这个新的查询交给一个变量 ... 在它的前面输入 ... $myquery = ,意思就是把 WP_Query() 查询到的东西交给一这个叫 myquery 的变量。
再修改一下,下面的这些代码 ...
在 have_posts() 的前面,加上 $myquery -> ... 表示,我们自己新建的这个查询里还有要显示的内容吗 ...
下面还有一个 have_posts() .... 同样在 the_post() 的前面,也加上一个 $myquery -> ,意思是,去准备好在我们的查询里的内容。
最后我们再使用一个 wp_reset_postdata() ,恢复一下查询 ... <?php wp_reset_postdata(); ?>
在这个循环里,我们用了一个 the_title() ,它会显示文章的标题 ... 这里我们用一个有序列表标记一下这个文章标题的列表 ... 这样会在文章的标题前面显示一个序号 ...
在循环开始的上面,先输入一个 <ol> ,然后在循环结束的下面,输入一个 </ol> 。 里面再输入一组列表标签 ... <li> ...
保存,打开网站首页看一下 .. 刷新 ... 并没有显示任何内容,因为我们现在还没有告诉 WordPress ,我们到底要查询什么样的内容。 在下面的视频里我们给这个查询添加一些参数 ...
<?php if ( have_posts() ): ?>
<?php while ( have_posts() ) : the_post(); ?>
<p><?php the_title(); ?></p>
<?php endwhile; ?>
<?php endif; ?>
<?php
$myqueryargs = array(
'post_type' => 'post',
'posts_per_page' => 10,
'orderby' => 'date',
'order' => 'ASC',
'category__in' => array( 8,15 ),
);
?>
<?php $myquery = new WP_Query( $myqueryargs ); ?>
<?php if ( $myquery -> have_posts() ): ?>
<ol>
<?php while ( $myquery -> have_posts() ) : $myquery -> the_post(); ?>
<li>
<?php the_title(); ?>
</li>
<?php endwhile; ?>
</ol>
<?php endif; ?>