You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在content-product.php中打印当前WooCommerce产品循环查询?

解决WooCommerce产品循环主查询语句打印问题

直接用$wpdb->last_query拿不到产品循环的整体查询,是因为循环执行过程中会触发大量单个产品的附属查询(比如获取产品元数据、缩略图、分类标签等),这个变量只会保存最后执行的那条SQL,自然不是你要的主循环查询。

下面是两种可行的解决方法:

方法一:默认产品存档主循环(Shop页、分类/标签页等)

在content-product.php里添加以下代码,直接获取全局主查询对象的SQL语句:

global $wp_query;
// 格式化打印主查询SQL
echo '<pre>' . esc_html( $wp_query->request ) . '</pre>';

$wp_query->request直接存储了当前主循环的完整SQL语句,不会被后续的单个产品查询覆盖。

方法二:自定义产品循环(使用WC_Product_Query或自定义WP_Query)

如果是你自己创建的产品循环,需要在初始化查询时就获取并保存主查询的SQL:

  1. 创建查询时:
$product_args = array(
    'status' => 'publish',
    'limit' => 12,
    // 你的其他查询参数
);
$product_query = new WC_Product_Query( $product_args );
$products = $product_query->get_products();

// 获取并保存主查询SQL,可通过全局变量传递到模板
$main_product_sql = $product_query->get_main_query()->request;
  1. 在content-product.php里打印:
echo '<pre>' . esc_html( $main_product_sql ) . '</pre>';

注意:打印时用esc_html()转义内容,避免XSS风险,<pre>标签能让SQL格式更易读。

内容的提问来源于stack exchange,提问作者Bhavesh Taneja

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 02:15:35