主题开发基础(二)之循环
一、循环的基本结构:
<?php if( have_post() ) : ?>
<?php while( have_post() ) : the_post(); ?>
<?php the_title(); ?>
<?php endwhile; ?>
<?php endif; ?>
说明:1.have_post()函数:判断当前页面是否还有要显示的文章
2.the_post()函数:准备好要显示的文章内容
3.the_title()函数:显示文章的标题,还有类似的函数,也叫模版标签
注:你可以在循环里添加任何你想显示的东西,文章的正文,特色图像,发布日期,作者等等。找到合适的模版标签,放在循环里,再加上点自己的设计。
相关资源:
http://codex.wordpress.org/Template_Tags
http://codex.wordpress.org/Function_Reference/have_posts
http://codex.wordpress.org/Function_Reference/the_post
http://codex.wordpress.org/The_Loop
二、条件判断
if...else <?php if() : ?> ... <?php else: ?> ... <?php endif; ?>
in_category(id) 以文章分类作为判断条件
三、自定义查询
前面我们在循环里使用了 WordPress 默认的查询来显示相关的内容,默认的查询会使用当前页面的路径作为查询的参数,然后到数据库里帮我们找到相应的内容。也就是在首页上会显示所有首页上的东西,在分类页面会显示属于这个分类的文章,在文章页面只会显示当前这个文章的内容。
WP_Query() http://codex.wordpress.org/Class_Reference/WP_Query
<?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; ?>
说明:$myquery -> 表示我们自己新建的这个查询里还有要显示的内容吗,在have_post(),the_post()前面加上$myquery ->,意思是去准备好在我们的查询里的内容,最后使用wp_reset_postdata(),恢复一下查询。
自定义查询的参数设置:
'post_type' => 设置查询的内容类型(post/page...)
'posts_per_page' =>设置显示内容数量
'orderby' =>设置内容的排序方法,比如按照文章修改的日期,按照文章评论的数量等等,默认查询会按照文章的发布日期,降序排列。
'order' =>升序或降序
'category_in' =>id ,只显示某个分类的内容,若指定多个分类,需将id放在一个数组里,array(8, 15)