淘先锋技术网

首页 1 2 3 4 5 6 7

看WordPress的官网的主题开发资料总结

循环loop

  • Loop是WordPress用来显示帖子的PHP代码,使用The Loop,WordPress会处理每个帖子以显示在当前页面上
  • 循环的概念

循环是面向对象和全局变量的组合

循环的两个重要全局变量是:
$ wp_query,它是类WP_Query的一个对象,持有一个WP数据库查询结果,其中$ wp_query-> posts,一个单独的WP_Post数组。
$ post是 WP_Post类的当前对象
查看WP_Post类的时候,post对象就是储存在数据库里的post日志对象,对象的参数就是数据库的元素:
关于wp_post对象的详细参数:
https://codex.wordpress.org/Class_Reference/WP_Post#Member_Variables_of_WP_Post
PS:
默认情况下,所有模板标签都依赖于$ post全局变量,并且$ post全局变量由_post()设置/修改,后者从$ wp_query全局变量获取其数据。$ post也由WP_Query :: the_post()设置/修改,如在辅助循环中使用的那样。

  • 使用循环(全部显示):

请务必在主题模板的顶部包含对标题模板的调用。如果您在自己的设计中使用The Loop(并且您自己的设计不是模板),请将WP_USE_THEMES设置为false:

 <?php define('WP_USE_THEMES',false); get_header(); ?>

在主页模板中输入:

<?php if(have_posts()) :while (have_posts()) :the_post();?>
//只显示日志的标题
 <?php the_title()?>
<?php endwhile;?>
<?php endif;?>

- 使用循环从某些类别中排除帖子(选择显示)

排除了类别3和8的帖子:直接使用内部查询函数,修改查询参数,对查询本身做出修改:

//直接声明查询类WP_Query的对象,并初始化对象,排除3、8类别
<?php $ query = new WP_Query('cat = -3,-8'); ?>
 <?php if($ query-> have_posts()):while($ query-> have_posts()):$ query-> the_post(); ?>
 	<?php th_title()?>
  	<?php the_content(); ?>
 <?php endwhile?>
 <?php endif; ?>

PS:WordPress将排除类别3和类别8中的所有帖子,即使在查看类别存档时!

多重循环Multiple Loops

  1. 实例
<?php rewind_posts(); ?> 
 
<?php while(have_posts()):the_post(); ?> 
	<! - ......  - > 
<?php endwhile; ?>

或者

//获取special_cat类别中的最后10篇帖子。
<?php query_posts('category_name = special_cat&posts_per_page = 10'); ?> 

<?php while(have_posts()):the_post(); ?> 
	<! - ......  - > 
<?php endwhile; ?>

嵌套循环(不太理解)
eg:

$ my_query = new WP_Query('cat = 3'); 
if($ my_query-> have_posts()){ 
	while($ my_query-> have_posts()){ 
		$ my_query-> the_post(); 
		内容(); 
	} 
} 
wp_reset_postdata();

帮助理解循环过程的一张图
在这里插入图片描述

关于模板