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 )可以还原为之前的查询条件。