1). WP_Query 是一个wordpress类,而$wp_query 是一个WP_Query的实例化对象。 我们可以用 WP_Query()来实现。
<?php
// The Query
$the_query = new WP_Query( $args );
?>
WP_Query提供了大量的参数,包括author,category, tag, taxonomy, post&page, type&status, pagination, offset, order&orderby, sticky post, time, custom field, permission. 另外还提供了Filters方式,从而可以进一步定制查询sql语句。 包括:posts_distinct, posts_groupby, posts_join, post_limits, posts_orderby, posts_where, posts_join_paged, posts_where_paged,posts_clauses.
2). get_query_var($var)获取WP_Query的value。 例如
<?php
//获取WP_Query里面key为category_name的value,也就是分类名
$page = (get_query_var(‘category_name’));
?>
3). query_posts()
最简单的改变wordpress默认查询的方法。 支持的参数跟WP_Query是类似的。
4). have_posts()
此函数一般在查询之后运行,用来检测你的查询是否有结果。 他只有true跟false两个值。一般搭配if else以及while语句,来循环输出loop的值。 代码如下:
<?php
if ( have_posts() ) :
while ( have_posts() ) : the_post();
// Your loop code
endwhile;
else :
echo wpautop( ‘Sorry, no posts were found’ );
endif;
?>
5). the_post()
遍历loop的值,一般搭配have_posts使用,来循环输出loop的值。
6). rewind_posts(), wp_reset_postdata(), wp_reset_query() 用来清除自定义query,恢复默认$post全局变量等。
7). 自定义wordpress sql语句。
使用全局变量$wpdb,来执行自己的sql语句。 这种方式的弊端是很多wordpress默认的功能比如分页,是不可用的。
$wpdb->query(), 单纯运行一条sql语句,比如update, delete之类的。 例子:
<?php
$wpdb->query(
”
DELETE FROM $wpdb->postmeta
WHERE post_id = ’13′
AND meta_key = ‘gargle’
”
);
$wpdb->query(
”
UPDATE $wpdb->posts
SET post_parent = 7
WHERE ID = 15
AND post_status = ‘static’
”
);
?>
$wpdb->get_var(),用来选取单个变量,例如:
<?php
$user_count = $wpdb->get_var( $wpdb->prepare( “SELECT COUNT(*) FROM $wpdb->users;” ) );
?>
$wpdb->get_row(),用来选取一条数据库记录, 例如:
<?php
$mylink = $wpdb->get_row(“SELECT * FROM $wpdb->links WHERE link_id = 10″);
?>
$wpdb->get_col(), 用来获取一列, 结果为包含该列所有值得一个数组。
$wpdb->get_results(), 用来选取多行数据。
另外,insert,update等操作也有其对应的方法,如下:
$wpdb->insert(), $wpdb->update()。
具体用法和参数请参照http://codex.wordpress.org/Class_Reference/wpdb