WooCommerce Subscriptions:未登录支付初始订阅订单失效问题
解决WooCommerce订阅父订单免登录支付问题
原代码仅支持普通订单的免登录支付,未适配订阅父订单场景,可通过以下代码实现需求:
// 允许未登录用户支付普通订单和订阅父订单 add_action( 'template_redirect', 'allow_guest_pay_for_subscription_parent_order' ); function allow_guest_pay_for_subscription_parent_order() { if ( is_wc_endpoint_url( 'pay' ) ) { $order_id = absint( get_query_var( 'order-pay' ) ); $order = wc_get_order( $order_id ); if ( $order && ( $order->get_type() === 'shop_order' || wcs_is_parent_order( $order_id ) ) ) { add_filter( 'woocommerce_checkout_registration_required', '__return_false' ); add_filter( 'woocommerce_enable_order_notes_field', '__return_false' ); } } }
代码说明
- 通过
template_redirect钩子在页面加载时触发逻辑,检测当前是否处于订单支付端点页面 - 用
wcs_is_parent_order()判断订单是否为订阅父订单(需确保WooCommerce订阅插件已激活) - 对普通订单和订阅父订单均关闭登录要求,同时可选关闭订单备注字段,简化未登录用户支付流程
内容的提问来源于stack exchange,提问作者user10635933
相关产品推荐
相关产品推荐

