要在 WordPress 制作的软件下载类网站实现下载次数统计功能,可以按照以下步骤进行:

1. 创建自定义字段


在 WordPress 中,你可以使用自定义字段来存储每个软件的下载次数。不过更推荐使用插件,比如 Advanced Custom Fields(ACF),它能更方便地管理自定义字段。

安装和配置 ACF 插件

 
  • 安装:登录 WordPress 后台,导航到 “插件” -> “添加新插件”,搜索 “Advanced Custom Fields”,然后点击 “安装现在” 并激活。
  • 创建自定义字段组
    1. 进入 “自定义字段” -> “添加新字段组”。
    2. 给字段组命名,例如 “软件下载统计”。
    3. 添加一个新字段,字段类型选择 “数字”,字段名称设置为 “download_count” ,标签可以设为 “下载次数”。
    4. 在 “位置规则” 中,选择 “文章类型” 等于 “软件(如果你创建了自定义文章类型来表示软件)” 或者 “文章”,具体根据你的网站结构来定。
    5. 保存字段组。

2. 修改下载链接


在软件文章页面中,将下载链接指向一个自定义的 PHP 脚本,该脚本会处理下载次数的统计。
在主题的 single.php(如果软件用默认文章类型)或者自定义文章类型的单篇模板文件中,修改下载链接代码。假设下载文件的链接原本是直接指向文件的 URL,现在修改为:
收起
php
<?php 
$download_url = get_field('download_url'); // 假设你用 ACF 存储了下载文件的 URL
$post_id = get_the_ID();
?>
<a href="<?php echo esc_url( add_query_arg( array( 'download' => $post_id ), home_url( '/download-handler.php' ) ) ); ?>">下载软件</a>

3. 创建下载处理脚本


在 WordPress 网站根目录下创建一个名为 download-handler.php 的文件,并添加以下代码:
收起
php
<?php
// 引入 WordPress 核心文件
require_once( dirname( __FILE__ ) . '/wp-load.php' );

if ( isset( $_GET['download'] ) ) {
    $post_id = intval( $_GET['download'] );
    // 获取当前下载次数
    $download_count = get_field( 'download_count', $post_id );
    if ( !$download_count ) {
        $download_count = 0;
    }
    // 增加下载次数
    $download_count++;
    // 更新下载次数到自定义字段
    update_field( 'download_count', $download_count, $post_id );

    // 获取下载文件的 URL
    $download_url = get_field( 'download_url', $post_id );

    if ( $download_url ) {
        // 重定向到下载文件
        header( 'Location: ' . esc_url( $download_url ) );
        exit;
    }
}
wp_die( '下载链接无效,请重试。' );
?>

4. 显示下载次数


在软件文章页面中,显示下载次数。在 single.php 或者自定义文章类型的单篇模板文件中添加以下代码:
收起
php
<?php 
$download_count = get_field( 'download_count', get_the_ID() );
if ( $download_count ) {
    echo '下载次数: ' . $download_count;
} else {
    echo '下载次数: 0';
}
?>

5. 安全性考虑

 
  • 文件验证:在 download-handler.php 中,确保 $download_url 是有效的、安全的下载链接,避免用户通过修改 download 参数来访问恶意链接。
  • 权限检查:可以添加额外的权限检查,例如只有注册用户才能下载软件,或者对下载频率进行限制,防止恶意刷下载次数。

通过以上步骤,你就可以在 WordPress 软件下载类网站实现下载次数统计功能了