如何隐藏非活跃状态的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
相关产品推荐
相关产品推荐

