feat(shop): 商品详情/归档壳层 1:1 同家族卡片与内容流

商品详情接入 content-wrap 主站详情壳;相关推荐与分类/标签/用户主页商品统一 product-card;卖家入口对齐用户主页 product tab。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-12 11:46:33 +08:00
co-authored by Claude Fable 5
parent c4310488b2
commit 28e4e19a3c
6 changed files with 152 additions and 113 deletions
+5 -26
View File
@@ -145,32 +145,11 @@ extract($args, EXTR_SKIP); // phpcs:ignore WordPress.PHP.DontExtract.extract_ext
?>
<div class="aksrt-product-archive__grid aksrt-product-archive__grid--default uh-product-grid">
<?php foreach ($product_items as $product) :
$sales = (int) ($product['sales'] ?? 0);
?>
<article class="aksrt-product-card">
<a href="<?php echo esc_url((string) ($product['permalink'] ?? '#')); ?>" class="aksrt-product-card__link">
<?php if (!empty($product['image'])) : ?>
<div class="aksrt-product-card__image">
<img src="<?php echo esc_url((string) $product['image']); ?>" alt="<?php echo esc_attr((string) ($product['title'] ?? '')); ?>" loading="lazy">
</div>
<?php else : ?>
<div class="aksrt-product-card__image aksrt-product-card__image--placeholder"><i class="fas fa-image"></i></div>
<?php endif; ?>
<div class="aksrt-product-card__body">
<h3 class="aksrt-product-card__title"><?php echo esc_html((string) ($product['title'] ?? '')); ?></h3>
<?php if (!empty($product['excerpt'])) : ?>
<p class="aksrt-product-card__excerpt"><?php echo esc_html(wp_trim_words((string) $product['excerpt'], 15)); ?></p>
<?php endif; ?>
<div class="aksrt-product-card__footer">
<span class="aksrt-product-card__price">¥<?php echo esc_html(number_format((float) ($product['price'] ?? 0), 2)); ?></span>
<?php if ($sales > 0) : ?>
<span class="aksrt-product-card__sales"><?php printf(esc_html__('已售 %d', 'aksrt'), $sales); ?></span>
<?php endif; ?>
</div>
</div>
</a>
</article>
<?php endforeach; ?>
get_template_part('templates/parts/shop/product', 'card', [
'product' => $product,
'show_sales' => ((int) ($product['sales'] ?? 0) > 0),
]);
endforeach; ?>
</div>
<?php if ($product_max_pages > 1 && function_exists('aksrt_render_profile_pagination')) : ?>
<?php aksrt_render_profile_pagination($product_max_pages, $product_page, 'product_page'); ?>