Saya cuba menanyakan pangkalan data dan menyerahkan hasilnya kepada update_post_meta
函数。但是不确定我是否正确构建了这个,或者我的 $order_id
Adakah terdapat masalah menggunakan ini?
Setelah pesanan dibuat, saya perlu mengemas kini meta pos dengan pengguna yang sedang log masuk dan hasil pertanyaan untuk pesanan semasa, jadi fikir cangkuk woocommerce_thankyou
akan masuk akal, tetapi meta pos tidak akan ditulis selepas pesanan sudah selesai. < /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); }
Sebarang cadangan tentang cara terbaik untuk menangani perkara ini?
Percubaan kod anda mengandungi berbilang pepijat dan ralat:
woocommerce_thankyou
ialah cangkuk aksi, bukan cangkuk penapis$order_id
传递给回调函数,$result
T/T$wpdb->prefix
与b03_
, ini boleh menjadikannya dinamik$wpdb
ialah objekglobal $woocommerce、$post;
adalah berlebihanJadi anda mendapat:
NOTA: Memandangkan anda menggunakan pertanyaan SQL tersuai yang mana data/hasilnya tidak wujud secara umum/secara lalai dalam WooCommerce, tetapi hanya untuk anda, saya telah menggantikannya dengan nilai tetap 10 dalam jawapan saya. Laraskan mengikut keperluan!