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

如何在EDD多卖家站点展示每个卖家的产品总下载量?

解决方案

要实现卖家所有产品的总下载量统计,需要替换原代码中调用购买量的逻辑,改为查询卖家所有产品并累加每个产品的下载次数。以下是修改后的完整代码及说明:

<?php

if ( ! defined( 'ABSPATH' ) ) {
    exit; // Exit if accessed directly.
}

global $post;
$author_id = 0;

// 获取当前卖家ID
if ( is_singular( 'download' ) ) {
    $author = new WP_User( $post->post_author );
    $author_id = $author->ID;
} else {
    $vendor = fes_get_vendor();
    if ( $vendor ) {
        $author_id = $vendor->id;
    }
}

//  fallback到当前用户ID(可选)
if ( ! $author_id ) {
    $author_id = get_current_user_id();
}

$vendor = new FES_Vendor( $author_id, true );

// 计算卖家所有产品的总下载量
$total_downloads = 0;

// 查询卖家所有已发布的EDD产品(优化性能:只获取ID、跳过分页计数)
$vendor_products = get_posts( array(
    'post_type'      => 'download',
    'posts_per_page' => -1,
    'post_status'    => 'publish',
    'author'         => $author_id,
    'fields'         => 'ids',
    'no_found_rows'  => true,
) );

// 累加每个产品的下载次数
foreach ( $vendor_products as $product_id ) {
    $total_downloads += edd_get_download_count( $product_id );
}

?>

<div class="total-downloads">
    <span class="total-number"><?php echo esc_html( $total_downloads ); ?></span>
    <span class="total-text"><?php esc_html_e('Downloads','notisnal')?></span>
</div>

关键修改点

  1. 修复变量类型问题:统一用$author_id存储卖家ID,避免原代码中$author类型不一致导致的报错。
  2. 查询卖家产品:通过get_posts筛选出该卖家所有已发布的EDD产品(post_type为download),并通过参数优化查询性能。
  3. 累加下载量:使用EDD内置函数edd_get_download_count()获取单个产品的下载次数,循环累加得到总下载量。
  4. 替换输出内容:将原代码中显示购买量的$vendor->sales_count替换为计算得到的$total_downloads。

可选优化:添加缓存

如果卖家产品较多,建议添加缓存减少重复计算,提升页面加载速度:

// 在计算总下载量前添加缓存逻辑
$cache_key = 'vendor_total_downloads_' . $author_id;
$total_downloads = wp_cache_get( $cache_key );

if ( false === $total_downloads ) {
    $total_downloads = 0;
    $vendor_products = get_posts( array(
        'post_type'      => 'download',
        'posts_per_page' => -1,
        'post_status'    => 'publish',
        'author'         => $author_id,
        'fields'         => 'ids',
        'no_found_rows'  => true,
    ) );

    foreach ( $vendor_products as $product_id ) {
        $total_downloads += edd_get_download_count( $product_id );
    }

    // 缓存1小时(3600秒)
    wp_cache_set( $cache_key, $total_downloads, '', 3600 );
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 07:20:10