我正在尝试创建一个表单,一旦表单提交,它会自动更新订单状态。表单位于订单详细信息页面,因此我假设当前页面ID等于orderID。当我尝试提交表单时,它只是卡住了,什么也没有发生。我在想,这是一个关于获取orderID的问题,因此需要更新哪个订单的状态。
我已经找到了gform_after_submission钩子,并将其链接到订单详细信息页面上的表单(表单ID 7)。我一直在尝试使用全局$wpdb;但不太确定这样做是否正确。
add_action( 'gform_after_submission', 'set_post_content', 10, 2 );
function update_order_submission( $order_id ) {
global $wpdb;
//getting orderID
$order = wc_get_order( $order_id );
//changing order status
$order = array();
$order['ID'] = $order->ID;
$order['post_status'] = 'wc-completed';
//updating order
wp_update_post( $order );
}我期望一旦表单已经提交,那么当前订单ID (提交表单的页面)的订单状态将被更新为已完成的订单状态。
发布于 2019-07-01 19:04:53
我设法解决了这个问题,通过使用$_GET"id“来获取URL参数,从而从url中获取orderID。下面的functions.php代码解决了这个问题。
add_action( 'gform_after_submission_7', 'update_order_submission', 10, 2 );
function update_order_submission( $entry, $form ) {
global $post;
$order_id = $_GET["id"]; // getting orderID
$order = wc_get_order( $order_id );
if( $order ) {
//changing order status
$order->update_status( 'completed' );
}
}发布于 2019-07-01 13:48:57
用下面的代码替换你的代码-
add_action( 'gform_after_submission', 'set_post_content', 10, 2 );
function update_order_submission( $entry, $form ) {
global $post;
$order_id = get_the_ID(); // getting orderID
$order = wc_get_order( $order_id );
if( $order ) {
//changing order status
$order->update_status( 'completed' );
}
}https://stackoverflow.com/questions/56826538
复制相似问题