在 WooCommerce 中,我使用 Mollie 在线付款。我尝试使用以下代码来根据订单付款的状态更新自定义订单字段,但它不起作用。
有什么帮助可以修复此代码吗?
add_action( 'woocommerce_checkout_update_order_meta', 'update_custom_is_order_paid_field' );
function update_custom_is_order_paid_field( $order_id ) {
// Get the order object
$order = wc_get_order( $order_id );
// Get the payment method
$mollie_paid_and_processed = $order->get_mollie_paid_and_processed();
// Set the custom_is_order_paid field based on the value of '_mollie_paid_and_processed'
if ( $mollie_paid_and_processed == '1' ) {
update_post_meta( $order_id, 'custom_is_order_paid', '1' );
} elseif ( $mollie_paid_and_processed == '0' ) {
update_post_meta( $order_id, 'custom_is_order_paid', '0' );
} else {
}
}
您应该尝试使用以下简化代码,该代码在订单状态更改时触发(与高性能订单存储兼容):
add_action( 'woocommerce_order_status_changed', 'update_custom_order_meta_conditionally', 10, 4);
function update_custom_order_meta_conditionally( $order_id, $from_status, $to_status, $order ) {
$order->update_meta_data( 'custom_is_order_paid', intval( $order->get_mollie_paid_and_processed() ) );
$order->save();
}
代码位于子主题的functions.php 文件中(或插件中)。效果应该会更好。