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

如何隐藏非活跃状态的BuddyPress用户个人资料?

按用户最后活跃时长隐藏BuddyPress个人资料实现方案

实现逻辑

利用BuddyPress原生存储的用户最后活跃元字段做判断,无需额外新增数据表或字段,兼容已安装的bbPress插件,不会影响站点管理员正常查看所有用户资料。

操作步骤

  • 你可以选择将代码添加到当前使用主题的functions.php文件末尾,也可以安装自定义代码片段插件来添加代码,避免主题更新后代码被覆盖
  • 部署后即可自动生效,无需额外配置

完整代码

// 按非活跃时长隐藏BuddyPress个人资料
add_action( 'bp_template_redirect', 'hide_inactive_user_bp_profile' );
function hide_inactive_user_bp_profile() {
    // 仅在BuddyPress个人资料页触发逻辑
    if ( ! bp_is_user() ) return;

    // 允许管理员查看所有用户资料,可自行新增权限放开给其他角色
    if ( current_user_can( 'manage_options' ) ) return;

    // 获取当前访问的用户ID
    $displayed_user_id = bp_displayed_user_id();
    // 自定义非活跃天数阈值,可自行修改数值
    $inactive_days_threshold = 90;

    // 获取用户最后活跃时间
    $last_active = bp_get_user_last_activity( $displayed_user_id );
    if ( empty( $last_active ) ) {
        // 无活跃记录的用户直接隐藏
        wp_redirect( home_url() );
        exit;
    }

    // 计算活跃时间差
    $last_active_timestamp = strtotime( $last_active );
    $days_since_last_active = ( time() - $last_active_timestamp ) / ( 60 * 60 * 24 );

    // 超过阈值则隐藏个人资料,跳转到首页
    if ( $days_since_last_active > $inactive_days_threshold ) {
        wp_redirect( home_url() );
        exit;
    }
}

自定义调整说明

  • 修改代码中$inactive_days_threshold的数值,即可调整触发隐藏的非活跃天数,例如改为30就代表用户30天无活跃就隐藏个人资料
  • 如果你希望非活跃用户访问时不是跳转到首页,而是显示指定提示,可以把wp_redirect( home_url() );替换为对应的提示输出逻辑
  • 如果需要给bbPress版主也开放查看所有用户资料的权限,可以在权限判断条件中添加|| current_user_can( 'moderate' )即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 13:15:07