基于对上一个问题的Count Add To Cart clicks and display them in WooCommerce Admin Product list个答案,我正在try 进一步修改代码,不仅包括点击和销售,还包括将两者分开,以便更好地了解销售情况.

这是我无法让它工作的代码:

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 = get_post_meta( $product->get_id(), 'total_sales', true );
            echo '<span>Sold </span>' . $sold_x_times . '</br><span>Clicks </span>' . (int) $product->get_meta( '_click_counter' );
            echo '<div style="margin-top:20px"></div>';
        
        // everything works except the line below = what I need is statistics based on clicks / sales
        // echo get_post_meta( $product->get_id(), '_click_counter' / 'total_sales', true );
    }
}

推荐答案

将最后一个函数替换为以下重新访问的代码函数:

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' && ! $product->is_type('auction') ) {
        $total_sales  = (int) $product->get_total_sales();
        $clicks_count = (int) $product->get_meta('_click_counter');

        printf('<span>%s</span> %d<br><span>%s</span> %d', __('Sold'), $total_sales, __('Clicks'), $clicks_count);
        
        if( $total_sales > 0 && $clicks_count > 0 ) {
            printf('<div style="margin-top:8px">%s %s<div>', __('Stats'), number_format($clicks_count / $total_sales, 2));
        }
    }
}

代码位于您的子主题的unctions.php文件中(或在插件中).经过测试,效果良好.

Php相关问答推荐

为什么这个方法调用用引号和花括号包裹?

在AJX请求中使用简写后,FormData出现非法调用错误

PHP Perl正则表达式—URL前面没有等号和可能的单引号或双引号

根据特定运输类别增加WooCommerce购物车总重量

Symfony/Panther Web抓取不适用于登录后的内容(云功能)

Mysqli_stmt::Execute():结果字段元数据中存在过早的EOF

如何确保所有语言文件都使用Laravel中的新密钥进行更新?

使注册字段UserMeta值对于WooCommerce中的每个用户是唯一的

从字符串转换日期和/或时间时,Laravel转换失败

WooCommerce在收据页面获取产品下载URL

根据类别的数量折扣更改WooCommerce购物车商品价格

PHP Match如何准确判断条件?

在php中计算两个没有假期的日期之间的小时差

主机中未检索用户表数据

使用自定义规则进行 Livewire 验证不会显示错误

PHP - 计算非数值数组

如何在不解压缩/重新压缩的情况下连接(连接)两个缩小的值

从 laravel 中的日期类型中删除时间

升级到 PHP 8.2:ksort 和 krsort 更改

使用 PHP 有条件地使用关键字 Twilio Programmable SMS