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

WooCommerce后台产品列添加点击量/销量比值统计遇阻

WooCommerce后台产品列表点击/销量比值计算修复

错误原因

你代码里的比值计算行写法完全错误:get_post_meta( $product->get_id(), '_click_counter' / 'total_sales', true )不符合PHP语法,get_post_meta的第二个参数是元键名称,不能在这里直接做除法运算。另外还需要处理销量为0的情况,避免出现除以0的致命错误。

修改后的完整代码

function add_to_cart_click_counter( $product_id ) {
    $product = wc_get_product( $product_id );
    $count = (int) $product->get_meta( '_click_counter' );
    $count++;
    $product->update_meta_data( '_click_counter', $count );
    $product->save();
}

add_action( 'woocommerce_add_to_cart', 'count_add_to_cart_clicks', 90, 4 );
function count_add_to_cart_clicks( $cart_item_key, $product_id, $quantity, $variation_id = null ){
    if ( did_action( 'woocommerce_add_to_cart' ) === 1 ) {
        add_to_cart_click_counter( $product_id );
        if ( $variation_id > 0 ) {
            add_to_cart_click_counter( $variation_id );
        }
    }
}

add_filter('manage_edit-product_columns', 'product_click_count_column' );
function product_click_count_column( $columns ) {
    $columns['click_counter'] = __( 'Clicks & Sold', 'woocommerce' );
    return $columns;
}

add_action( 'manage_product_posts_custom_column', 'product_click_count_column_content', 10, 2 );
function product_click_count_column_content( $column, $post_id ) {
    global $product;
    
    if ( $column === 'click_counter' ) { 
        if ( $product->get_type() == 'auction' ) return;
        
        // 获取销量和点击量
        $sold_x_times = (int) get_post_meta( $product->get_id(), 'total_sales', true );
        $click_count = (int) $product->get_meta( '_click_counter' );
        
        // 输出销量和点击量
        echo '<span>Sold </span>' . $sold_x_times . '<br><span>Clicks </span>' . $click_count;
        echo '<div style="margin-top:8px"></div>';
        
        // 计算并输出点击/销量比值
        if ( $sold_x_times > 0 ) {
            $ratio = number_format( $click_count / $sold_x_times, 2 );
            echo '<span>Click/Sale Ratio: </span>' . $ratio;
        } else {
            echo '<span>Click/Sale Ratio: </span>N/A (No sales yet)';
        }
    }
}

关键修改点

  1. 先分别获取total_sales和_click_counter的数值,并转为整数,确保运算时是数值类型
  2. 增加销量为0的判断:如果销量为0,显示"N/A (No sales yet)",避免除以0报错
  3. 使用number_format把比值保留两位小数,让数据更直观易读
  4. 调整了间距样式,让列内内容排版更美观

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 17:15:28