这里有两个问题。
下面是WooCommerce wc-order-functions.php中的一个函数,我发现它的工作方式与我需要的几乎相似。
function wc_get_order_id_by_order_key( $order_key ) {
global $wpdb;
// Faster than get_posts()
$order_id = $wpdb->get_var( $wpdb->prepare( "SELECT post_id FROM {$wpdb->prefix}postmeta WHERE meta_key = '_order_key' AND meta_value = %s", $order_key ) );
return $order_id;
}
这会返回$order_id
,但我希望获得$order_key
,这样我就可以构建在买方点击“下订单”后生成的网址。结帐页面上的按钮,例如domain.com/checkout/order-received/2316/?key=wc_order_54c7142660e24
wc_order_54c7142660e24
是$order_id
和
2316
是$order_key
我知道下面的SQL命令从数据库获取我想要的值:
function wc_get_order_key_by_order_id( $order_id ) {
global $wpdb;
// Faster than get_posts()
$order_key = $wpdb->get_var( $wpdb->prepare( "SELECT meta_value FROM {$wpdb->prefix}postmeta WHERE meta_key = '_order_key' AND post_id = %s", $order_id ) );
return $order_key;
}
但是我不确定如何将过滤器挂钩到wordpress functions.php所以这是我的第一个问题。
第二个问题是我一直在寻找可能负责为$order_key
生成meta_value的函数,但似乎无法找到它,很高兴知道它的工作原理。我认为第一种方式有点多余,因为我正在寻找的功能已经存在,但似乎无法找到它。
答案 0 :(得分:0)
尝试将此添加到您需要该链接的woocommerce模板文件中:
echo get_site_url().'/checkout/order-received/'.$order->id.'&key='.$order->order_key;