我正在使用 WooCommerce 预订,客户可以在其中请求需要管理员确认的预订。如果管理员未确认预订,我希望在 24 小时后自动取消订单。
在X 时间通过答案代码后更改 WooCommerce 订单状态,我正在寻找任何帮助来满足我的要求,使用 WP cron。
我正在使用 WooCommerce 预订,客户可以在其中请求需要管理员确认的预订。如果管理员未确认预订,我希望在 24 小时后自动取消订单。
在X 时间通过答案代码后更改 WooCommerce 订单状态,我正在寻找任何帮助来满足我的要求,使用 WP cron。
我带着一个可行的解决方案来满足我的要求。我希望它可以帮助某人。
计划每 30 分钟运行一次事件,检查超过 24 小时的挂单并取消它们。
* 创建自定义预定钩子 * * @param $schedules * @return 混合 */ 功能 custom_cron_schedule( $schedules ) { if ( !isset( $schedules["30min"] ) ) { $schedules["30min"] = array( '间隔' => 30 * 60, 'display' => __( '每 30 分钟一次' ) ); } 返回 $schedules; } add_filter('cron_schedules','custom_cron_schedule'); //如果还没有调度,则调度一个动作 如果(!wp_next_scheduled('custom_pending_orders_hook')){ wp_schedule_event(时间(),'30分钟','custom_pending_orders_hook'); } add_action('custom_pending_orders_hook', 'custom_cancel_pending_orders'); /** * 在预定事件上运行的功能,检查超过 24 小时的订单 * */ 功能 custom_cancel_pending_orders() { // 获取超过 24 小时且处于待处理状态的预订 $args = 数组( 'post_type' => 'wc_booking', 'posts_per_page' => -1, 'post_status' => '待确认', 'date_query' => 数组( 大批( '之前' => '24 小时前' // 小时前 ) ) ); // 做查询 $查询 = 新 \WP_Query( $args ); // 循环 if ( $query->have_posts() ) { // 获取帖子 $bookings = $查询->帖子; // 遍历帖子 foreach ( $bookings 作为 $booking ) { if ( class_exists('WC_Booking') ) { // 使用帖子的 id 获取预订对象 $wc_booking = 新 \WC_Booking( $booking->ID ); // 改变状态 如果($wc_booking){ $wc_booking->update_status('取消'); } } } } 别的 { // 没有找到帖子,继续 } // 恢复原始 Post 数据 wp_reset_postdata(); }