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

WooCommerce使用Select查询postmeta获取正确meta_value问题求助

问题根源

WordPress postmeta表支持同一post_id关联多条不同meta_key的元数据,你当前的SQL仅筛选了post_id条件,get_row方法默认返回匹配到的第一条记录,该条记录刚好是WooCommerce存储公开订单号的元数据,对应值就是wc_order_h8K0C1ODu2134,和你要的桌号元数据不是同一条。

解决方法

方案1:使用WooCommerce原生方法(更推荐)

不需要自己写SQL操作数据库,直接调用订单封装好的meta获取方法即可:

// 把括号里的table_number替换为你实际的桌号对应的meta_key
$table_num = $order->get_meta('table_number', true);
echo $table_num;

如果不知道桌号对应的meta_key名称,可以在数据库wp_postmeta表中查询post_id=274的所有记录,找到meta_value为Table No 10的条目,对应的meta_key字段值就是需要传入的参数。

方案2:修正SQL查询写法

如果需要自行写SQL实现,需要增加meta_key筛选条件,同时修正$wpdb->prepare的参数绑定用法,避免SQL注入风险:

global $wpdb;
$order_id = $order->get_id();
// 同样替换table_number为实际的meta_key
$table_num = $wpdb->get_var( $wpdb->prepare(
    "SELECT meta_value FROM $wpdb->postmeta WHERE post_id = %d AND meta_key = %s",
    $order_id,
    'table_number'
) );
echo $table_num;

以上两种方式获取到的都是数据库中存储的最新值,管理员修改对应字段后,用户刷新感谢页即可同步展示更新后的内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 14:06:05