feat(shop): complete storefront archive, seller edit, revenue

Wire product cat/tag archives to settings-driven sort and AJAX paging,
seller product options/video/params editing, revenue withdraw form and
order review submit — finishing remaining shop frontend gaps after buy-path.
This commit is contained in:
kate522 committed 2026-07-12 10:38:02 +08:00
1 parent 5a8f08db8a
commit f3db6c89cc
17 files changed
+1024 -248

No files matched your search

+42
View File
@@ -91,7 +91,49 @@ $product = (array) ($edit_view['product'] ?? []);
</label>
</div>
<div class="aksrt-product-editor__panel">
<h2><?php esc_html_e('规格选项', 'aksrt'); ?></h2>
<p class="aksrt-product-editor__hint"><?php esc_html_e('每行一组:规格名|选项1:加价,选项2:加价。例如:颜色|红:0,蓝:10', 'aksrt'); ?></p>
<label class="aksrt-product-editor__field">
<span><?php esc_html_e('规格配置', 'aksrt'); ?></span>
<textarea name="options_text" class="aksrt-product-editor__textarea" rows="6" data-aksrt-options-text placeholder="颜色|红:0,蓝:10&#10;尺码|M:0,L:5"><?php
$opt_lines = [];
foreach ((array) ($product['options'] ?? []) as $group) {
$vals = [];
foreach ((array) ($group['values'] ?? []) as $v) {
$vals[] = (string) ($v['label'] ?? '') . ':' . (string) ($v['price_change'] ?? 0);
}
if (!empty($group['name']) && $vals) {
$opt_lines[] = (string) $group['name'] . '|' . implode(',', $vals);
}
}
echo esc_textarea(implode("\n", $opt_lines));
?></textarea>
</label>
<div class="aksrt-product-editor__columns">
<label class="aksrt-product-editor__field">
<span><?php esc_html_e('起售价', 'aksrt'); ?></span>
<input type="number" name="start_price" class="aksrt-product-editor__input" min="0" step="0.01" value="<?php echo esc_attr((string) ($product['start_price'] ?? 0)); ?>">
</label>
<label class="aksrt-product-editor__field">
<span><?php esc_html_e('支付模式', 'aksrt'); ?></span>
<select name="pay_modo" class="aksrt-product-editor__input">
<option value="0" <?php selected((string) ($product['pay_modo'] ?? '0'), '0'); ?>><?php esc_html_e('现金', 'aksrt'); ?></option>
<option value="points" <?php selected((string) ($product['pay_modo'] ?? '0'), 'points'); ?>><?php esc_html_e('积分', 'aksrt'); ?></option>
</select>
</label>
</div>
<label class="aksrt-product-editor__field">
<span><?php esc_html_e('商品参数(每行 名称:值)', 'aksrt'); ?></span>
<textarea name="product_params" class="aksrt-product-editor__textarea" rows="4"><?php echo esc_textarea((string) ($product['product_params'] ?? '')); ?></textarea>
</label>
<label class="aksrt-product-editor__field">
<span><?php esc_html_e('视频地址(每行一个 URL)', 'aksrt'); ?></span>
<textarea name="product_video" class="aksrt-product-editor__textarea" rows="3"><?php echo esc_textarea(implode("\n", (array) ($product['product_video'] ?? []))); ?></textarea>
</label>
</div>
<div class="aksrt-product-editor__panel">
<h2><?php esc_html_e('发货与售后', 'aksrt'); ?></h2>
<div class="aksrt-product-editor__columns">
<label class="aksrt-product-editor__field">