From c2067450cb1d4509efa3fc2fa522bdab55df66c1 Mon Sep 17 00:00:00 2001 From: tikkhun Date: Fri, 7 Nov 2025 16:06:46 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E8=AE=A2=E9=98=85):=20=E5=AE=9E=E7=8E=B0?= =?UTF-8?q?=E5=A4=9A=E8=AE=A2=E9=98=85=E8=AE=A1=E5=88=92=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=E5=B9=B6=E6=94=AF=E6=8C=81=E6=B7=B7=E8=A3=85=E4=BA=A7=E5=93=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在后台添加多订阅计划管理界面,支持添加、删除和配置多个订阅计划 - 扩展订阅功能以支持混装产品类型,避免子项目重复计价 - 新增订阅计划数据存储和规范化处理逻辑 - 前端订阅逻辑适配混装容器价格计算 --- assets/js/admin.js | 29 ++++++- .../admin/class-yoone-subscriptions-admin.php | 76 ++++++++++++++++++- includes/class-yoone-subscriptions.php | 21 +++++ .../class-yoone-subscriptions-frontend.php | 38 +++++++++- 4 files changed, 160 insertions(+), 4 deletions(-) diff --git a/assets/js/admin.js b/assets/js/admin.js index 8574217..9709fd8 100644 --- a/assets/js/admin.js +++ b/assets/js/admin.js @@ -1,3 +1,30 @@ (function($){ - // 预留:后台联动逻辑(例如启用订阅后才显示其他字段)。 + $(function(){ + var $tbody = $('#yoone-sub-plans-body'); + var $addBtn = $('#yoone-sub-plan-add'); + + if ($tbody.length && $addBtn.length) { + $addBtn.on('click', function(){ + var row = [ + '', + '', + '', + '', + '', + '', + '' + ].join(''); + $tbody.append(row); + }); + + $tbody.on('click', '.yoone-sub-plan-remove', function(){ + $(this).closest('tr').remove(); + }); + } + }); })(jQuery); \ No newline at end of file diff --git a/includes/admin/class-yoone-subscriptions-admin.php b/includes/admin/class-yoone-subscriptions-admin.php index c5317f1..e5e84e8 100644 --- a/includes/admin/class-yoone-subscriptions-admin.php +++ b/includes/admin/class-yoone-subscriptions-admin.php @@ -28,7 +28,8 @@ class Yoone_Subscriptions_Admin { $tabs['yoone_subscriptions'] = array( 'label' => __('订阅计划', 'yoone-subscriptions'), 'target' => 'yoone_subscriptions_data', - 'class' => array('show_if_simple', 'show_if_variable'), + // 在 simple、variable 以及 yoone_bundle(混装)产品类型上显示 + 'class' => array('show_if_simple', 'show_if_variable', 'show_if_yoone_bundle'), 'priority' => 80, ); return $tabs; @@ -43,7 +44,8 @@ class Yoone_Subscriptions_Admin { $cfg = Yoone_Subscriptions::get_config($product); wp_nonce_field('yoone_subscriptions_save', 'yoone_subscriptions_nonce'); - echo '