我正在嘗試查詢資料庫並將結果傳遞到 update_post_meta
函數。但是不確定我是否正確構建了這個,或者我的 $order_id
使用是否存在問題?
一旦下訂單,我需要使用當前登入使用者和目前訂單的查詢結果更新帖子元,因此認為 woocommerce_thankyou
掛鉤有意義,但是在完成訂單後不會寫入帖子元。 < /p>
add_filter( 'woocommerce_thankyou', 'my_function', 10, 2); function my_function( $result, $order_id ) { // Load the global $post global $woocommerce, $post; // Get the post ID $order_id = $post->ID; // Then you can get the order object $order = wc_get_order( $order_id ); $user_ID = get_current_user_id(); //SQL global $wpdb; return $wpdb->get_var("SELECT SUM(b03_woocommerce_order_itemmeta.meta_value) FROM b03_woocommerce_order_itemmeta JOIN b03_woocommerce_order_items ON b03_woocommerce_order_itemmeta.order_item_id = b03_woocommerce_order_items.order_item_id JOIN b03_posts ON b03_woocommerce_order_items.order_id = b03_posts.ID JOIN b03_postmeta ON b03_posts.ID = b03_postmeta.post_id WHERE b03_posts.post_type = 'shop_order' AND b03_woocommerce_order_itemmeta.meta_key = 'trees_planted' AND b03_postmeta.meta_value = $user_ID AND b03_postmeta.meta_key = '_customer_user' AND b03_posts.ID = $order_id"); update_post_meta( $order_id, 'trees',$wpdb); }
了解有關如何最好地處理此問題的任何建議嗎?
您的程式碼嘗試包含多個錯誤和錯誤:
woocommerce_thankyou
是一個操作鉤子,而不是過濾器鉤子$order_id
傳遞給回呼函數,$result
不適用$wpdb->prefix
與b03_
,這可以使其動態$wpdb
是一個物件global $woocommerce、$post;
是多餘的所以你得到:
注意:因為您使用的是自訂SQL 查詢,其中資料/結果在WooCommerce 中一般/預設情況下不存在,但僅針對您而言,我已將其替換為我的回答固定值10。 根據需要進行調整!