wordpress 输出query_posts 查询的sql语句
wordpress 执行 query_posts 的时候,查看执行的SQL语句,通过输出 echo $wp_query->request; 就能看到。
一个完整的示例
$args = array(
'post_type'=>'product',
'post_status'=>'publish',
'meta_query'=>array(
array(
'key'=>'sort',
'type'=>'NUMERIC',
'compare'=>'>',
'value'=>'100',
)
),
'posts_per_page'=>10,
'paged'=>1,
'orderby'=>'meta_value_num',
'order'=>'DESC'
);
// global $wp_query;
query_posts($args);
echo $wp_query->request;
输出的结果
SELECT SQL_CALC_FOUND_ROWS wp_posts.ID FROM wp_posts INNER JOIN wp_postmeta ON ( wp_posts.ID = wp_postmeta.post_id ) WHERE 1=1 AND (
( wp_postmeta.meta_key = 'sort' AND CAST(wp_postmeta.meta_value AS SIGNED) > '100' )
) AND wp_posts.post_type = 'product' AND ((wp_posts.post_status = 'publish')) GROUP BY wp_posts.ID ORDER BY wp_postmeta.meta_value+0 DESC LIMIT 0, 10
了解更多
一般执行 query_posts 后需要,执行 wp_reset_query 。 因为 $wp_query 是一个全局变量,执行后查询的条件已经被修改为 $args 。这个函数( wp_reset_query )可以还原为之前的查询条件。