WooCommerce如何自定义结账表单和样式

  • WooCommerce 现在有两种结账体验:Blocks(Gutenberg 区块结账) 与 经典 shortcode 结账 。很多字段编辑插件(如 Checkout Field Editor for WooCommerce)只对经典结账生效。

  • 如果你把页面改为使用简码 [woocommerce_checkout],可以自由使用该插件,但需要手动恢复区块结账那样的 UI(例如商品缩略图 + 数量徽章)。

  • 解决方法:用两个 WordPress/WooCommerce filter(钩子):

    1. woocommerce_cart_item_name:改写商品名称的 HTML,插入缩略图与徽章 DOM(并保留原有商品名链接/文本)。
    2. woocommerce_checkout_cart_item_quantity:移除 WooCommerce 自动添加的 <strong class="product-quantity">× 1</strong>,避免重复。
  • CSS 使用区块的 class(.wc-block-components-order-summary-item__quantity),颜色用 CSS 变量 --theme-palette-color-1 继承全局调色板,这样当全局颜色变更时徽章颜色自动同步。

下载插件Checkout Field Editor for WooCommerce

WooCommerce里设置自定义结账字段,例如billing_first_name是中文的姓,billing_last_name是中文的名,可以调整字段上下顺序来显示字段的顺序

Checkout Field Editor 插件只能修改 "经典结账页(shortcode)" 的字段

但是WooCommerce网站用的是WooCommerce Blocks checkout(Gutenberg 区块版结账

区块结账使用完全不同的系统,不读取 Checkout Field Editor 的设置

只要关闭 WooCommerce Blocks 的结账,换成"经典结账页(shortcode)"

打开结账页面,使用Elementor编辑,删掉主题默认的结账容器

再新添一个简码shortcode

csharp 复制代码
[woocommerce_checkout]

就能显示Checkout Field Editor自定义的字段,现在修改woocommerce_checkout的样式

在主题,自定义里新增额外CSS

写入下面代码,CSS 不写死颜色,而是使用 var(--theme-palette-color-1)(许多区块主题/全局调色板都会定义)。如果你的主题使用不同的变量名,请相应调整。

css 复制代码
/* 整个商品行 */
.checkout-product-row {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    margin-bottom: 16px;
}

/* 图片容器,用于定位徽标 */
.checkout-product-thumb {
    position: relative;
    width: 60px;
    height: 60px;
    flex-shrink: 0;
}

/* 商品缩略图 */
.checkout-product-thumb img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    border-radius: 8px;
    display: block;
}

/* Woo Blocks 数量徽标(颜色继承 theme palette) */
.checkout-product-thumb .wc-block-components-order-summary-item__quantity {
    position: absolute;
    top: -6px;
    right: -6px;
    padding: 2px 7px;
    border-radius: 14px;
    font-size: 11px;
    font-weight: 600;
    line-height: 1;
    color: #fff; /* 文字颜色,Blocks 默认白色 */
    background: var(--theme-palette-color-1); /* 自动使用全局调色板颜色 */
}

/* 商品信息区域 */
.checkout-product-info {
    display: flex;
    flex-direction: column;
    justify-content: center;
}

/* 商品标题 */
.checkout-product-title {
    font-size: 14px;
    font-weight: 600;
    line-height: 1.4;
    display: block;
}

在外观,主题文件编辑器里,选着functions.php,注意 :始终用子主题(child theme)来修改 functions.php,避免主题更新丢失修改。修改前请备份文件或站点。这次使用Blocksy Child

php 复制代码
// 在经典结账(shortcode)订单列表中加入商品缩略图 + WooBlocks风数量徽标
add_filter( 'woocommerce_cart_item_name', 'add_checkout_product_thumbnail', 10, 3 );
add_filter( 'woocommerce_checkout_cart_item_quantity', function( $quantity, $cart_item, $cart_item_key ) {
    return ''; // 删除默认数量
}, 10, 3 );
function add_checkout_product_thumbnail( $product_name, $cart_item, $cart_item_key ) {

    // 仅在结账页面生效
    if ( ! is_checkout() ) return $product_name;

    // 获取商品
    $product = $cart_item['data'];

    // 获取商品缩略图(小图)
    $thumbnail = $product->get_image( 'thumbnail' );

    // 数量徽标:使用 Woo Blocks 的 class(自动继承调色板)
    $qty = $cart_item['quantity'];
    $badge = '
        <div class="wc-block-components-order-summary-item__quantity">
            <span>' . $qty . '</span>
        </div>
    ';

    // 完整结构
    $html = '
    <div class="checkout-product-row">
        <div class="checkout-product-thumb">
            ' . $thumbnail . '
            ' . $badge . '
        </div>

        <div class="checkout-product-info">
            <span class="checkout-product-title">' . $product_name . '</span>
        </div>
    </div>
    ';

    return $html;
}

效果如下

相关推荐
object not found9 天前
WooCommerce 接入 KPay 后订单完成页不显示订单信息:returnUrl 动态参数问题解决
前端·wordpress·独立站支付
皓月盈江12 天前
WordPress博客迁移到Hexo静态博客教程
linux·服务器·hexo·wordpress·博客迁移·静态博客
boke112百科22 天前
WordPress经典编辑器【插入至文章】按钮怎么调到右上角?
编辑器·wordpress·wordpress教程·经典编辑器
Rainy Blue8831 个月前
从零搭建个人动态博客
博客·wordpress
hui-梦苑1 个月前
[PHP]轻量主题函数WordPress 集成 KaTeX 数学公式渲染
开发语言·php·wordpress·katex
VIP_CQCRE1 个月前
用 Ace Data Cloud 把 WordPress 变成你的 AI 内容营销中枢
ai·seo·wordpress·内容营销·ace data cloud
豆豆1 个月前
2026 主流 CMS 建站系统对比分析:企业、个人建站该如何选型?
wordpress·建站系统·cms建站·企业建站·建站选型·saas建站·2026建站指南
VIP_CQCRE1 个月前
用 Ace Data Cloud 自动发布 WordPress 文章:把 AI 写作变成可积累的 SEO 内容资产
ai·api·seo·wordpress·acedatacloud
VIP_CQCRE1 个月前
用 Ace Data Cloud 自动发布 WordPress 文章:把 SEO 内容站变成长期增长资产
ai·自动化·seo·wordpress·acedatacloud
2601_965798472 个月前
Renovate Theme Setup: Fast Contractor & Construction Site Architecture
theme·wordpress