WooCommerce订阅插件允许商店设置周期性的订阅产品。客户购买订阅后,系统会自动根据设定周期进行续订。但对于货到付款的场景,自动续订就面临挑战。
自定义订单状态
为了实现货到付款的续订流程,我们需要创建一个自定义订单状态。以下是具体步骤:
1、创建自定义状态:通过添加代码片段到主题的functions.php文件中,来创建新的订单状态。
2、修改订阅续订逻辑:将自动续订的逻辑修改为手动确认,即当客户付款后,订、单状态更新为已支付,然后才进行货物的发货。
3、设置订单状态转换:确保订单可以在不同的状态间正确转换,例如从’待付款’到’已支付’。
代码实现
以下是创建自定义订单状态和修改续订逻辑的基础代码示例:
// 添加自定义订单状态
function add_custom_order_status() {register_post_status('wc-awaiting-payment', array('label' => _x('Awaiting Payment', 'Order status', 'woocommerce'),'public' => true,'exclude_from_search' => false,'show_in_admin_all_list' => true,'show_in_admin_status_list' => true,'label_count' => _n_noop('Awaiting Payment <span class="count">(%s)</span>', 'Awaiting Payments <span class="count">(%s)</span>', 'woocommerce')));
}
add_action('init', 'add_custom_order_status');
// 修改订阅续订逻辑
add_filter('woocommerce_subscriptions_renewal_order_created', 'modify_renewal_order_logic', 10, 2);
function modify_renewal_order_logic($renewal_order, $original_order) {// 设置新订单状态为待付款$renewal_order->update_status('awaiting-payment', 'Order is awaiting payment.');
}
通过以上设置,每当订阅需要续订时,系统会创建一个新的订单并设置为’待付款’状态。商家可以等待客户完成付款后再进行发货。
Wordpress二次开发: