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

如何限制WordPress用户每周仅上传10个视频

实现WordPress用户每周视频上传数量限制

要把现有的总上传限制改成每周限制,你需要替换统计用户视频数量的逻辑,不再统计总数,而是统计用户过去7天内发布的视频数量。以下是修改后的完整代码:

<?php
function streamtube_child_check_limit_uploads( $errors ){
 
    $max_allowed = 10; // 每周允许上传的视频数量
    $user_id = get_current_user_id();

    // 跳过管理员权限用户
    if( current_user_can( 'administrator' ) ){
        return $errors;
    }
 
    // 计算7天前的时间戳
    $one_week_ago = strtotime( '-7 days' );

    // 查询用户过去7天内发布的视频数量
    $weekly_posts_query = new WP_Query( array(
        'author'         => $user_id,
        'post_type'      => 'video',
        'post_status'    => 'publish', // 只统计已发布的内容,可根据需求调整
        'date_query'     => array(
            array(
                'after' => date( 'Y-m-d H:i:s', $one_week_ago ),
                'inclusive' => true,
            ),
        ),
        'posts_per_page' => -1,
        'fields'         => 'ids', // 只获取ID,提升查询效率
    ) );

    $current_user_weekly_posts = $weekly_posts_query->found_posts;
 
    // 检查是否达到每周上限
    if( $current_user_weekly_posts >= $max_allowed ){
        $errors->add(
            'not_allowed',
            esc_html__( '你已达到每周允许上传的视频数量上限,请下周再尝试。', 'streamtube-child' )
        );
    }        
 
    return $errors;
 
}
add_filter( 'streamtube/core/upload/video/errors', 'streamtube_child_check_limit_uploads', 100, 1 );
add_filter( 'streamtube/core/upload_chunks/video/errors', 'streamtube_child_check_limit_uploads', 100, 1 );
add_filter( 'streamtube/core/post/import_embed/errors', 'streamtube_child_check_limit_uploads', 100, 1 );

关键逻辑说明

  • 时间范围计算:通过strtotime( '-7 days' )获取7天前的时间戳,作为统计的起始点,确保只计算最近一周的上传量
  • 高效查询:使用WP_Query并指定fields => 'ids',只获取帖子ID而非完整内容,提升查询性能
  • 权限判断:提前跳过管理员用户,避免不必要的查询
  • 状态过滤:只统计publish状态的视频,你可以根据需求调整为包含draft等其他状态

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 15:47:06