You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在WooCommerce商品标题中展示限量版画的当前编号?

解决WooCommerce限量版画标题显示当前编号的方案

嘿,这个需求特别贴合艺术画廊的场景,我刚好有一套可行的实现思路,你可以跟着下面的步骤来操作:

核心思路

我们需要通过WooCommerce的钩子来修改商品标题,逻辑是:获取该版画已售出的数量,计算当前可购买的编号(已售数+1),然后把这个编号拼接在原标题后面。如果需要支持每个商品单独设置限量数,还可以添加自定义字段来实现。

基础版实现(无限量设置)

先从最简单的版本开始,直接在商品标题后追加当前版画编号。把下面的代码添加到你的主题functions.php文件或者自定义插件中:

add_filter( 'woocommerce_product_title', 'custom_edition_number_product_title', 10, 2 );
function custom_edition_number_product_title( $title, $product ) {
    // 只针对简单产品生效(如果是可变产品,需要单独调整逻辑)
    if ( ! $product->is_type('simple') ) {
        return $title;
    }

    // 获取该商品已售出的总数量
    $sold_quantity = $product->get_total_sales();
    // 计算当前可购买的版画编号
    $current_edition = $sold_quantity + 1;
    // 拼接新标题
    $updated_title = $title . ' - 第' . $current_edition . '幅';

    return $updated_title;
}

添加后,当你卖出20幅时,商品标题就会自动变成「版画名称 - 第21幅」啦。

进阶版实现(支持限量设置)

如果需要给每幅版画单独设置限量数,比如有的是100幅,有的是50幅,还能在售罄时显示提示,那可以添加自定义字段来实现:

第一步:添加限量数自定义字段

这段代码会在商品编辑页的「常规」选项卡下添加一个“版画限量数”的输入框:

// 在商品编辑页添加限量数字段
add_action( 'woocommerce_product_options_general_product_data', 'add_edition_limit_field' );
function add_edition_limit_field() {
    woocommerce_wp_text_input( array(
        'id' => '_edition_limit',
        'label' => '版画限量数',
        'type' => 'number',
        'custom_attributes' => array(
            'min' => '1',
            'step' => '1'
        ),
        'desc_tip' => true,
        'description' => '设置该版画的总限量数量,比如100'
    ) );
}

// 保存限量数字段的值
add_action( 'woocommerce_process_product_meta', 'save_edition_limit_field' );
function save_edition_limit_field( $post_id ) {
    $edition_limit = isset( $_POST['_edition_limit'] ) ? absint( $_POST['_edition_limit'] ) : '';
    update_post_meta( $post_id, '_edition_limit', $edition_limit );
}

第二步:修改标题逻辑,加入限量判断

替换之前的标题过滤代码,用下面的版本:

add_filter( 'woocommerce_product_title', 'custom_edition_number_with_limit_product_title', 10, 2 );
function custom_edition_number_with_limit_product_title( $title, $product ) {
    if ( ! $product->is_type('simple') ) {
        return $title;
    }

    $sold_quantity = $product->get_total_sales();
    $edition_limit = get_post_meta( $product->get_id(), '_edition_limit', true );
    
    // 如果没设置限量数,直接显示当前编号
    if ( empty( $edition_limit ) ) {
        $current_edition = $sold_quantity + 1;
        return $title . ' - 第' . $current_edition . '幅';
    }

    // 如果已售达到限量,显示售罄提示
    if ( $sold_quantity >= $edition_limit ) {
        return $title . ' - 已售罄';
    }

    // 正常状态下,显示编号+总限量
    $current_edition = $sold_quantity + 1;
    return $title . ' - 第' . $current_edition . '幅(共' . $edition_limit . '幅)';
}

注意事项

  • 代码不要直接修改WooCommerce核心文件,放在主题的functions.php或者自定义插件里更安全,避免更新主题/插件时丢失。
  • 如果你的商品是可变产品(比如不同尺寸的版画),需要调整代码逻辑,因为可变产品的销量是按变体统计的,你可能需要针对每个变体单独处理编号。
  • 测试时可以模拟几次购买,看看标题是否正确更新,售罄状态是否正常显示。

内容的提问来源于stack exchange,提问作者fafchook

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:35:36