B2主题解除特定角色圈子话题阅读限制

B2主题美化教程:在圈子话题中,用户可对话题设置付费可见、评论可见、积分可见以及等级可见等阅读权限。但是作者发布的话题,在设置了上述几个隐藏可见之后,自己都看不到了。比如付费可见,需要付费才能看见自己的帖子,其他几个同样也是。因为都具有帖子的编辑权限,所以编辑帖子也能看到,这说明目前的功能是有问题的。

B2主题解除特定角色话题阅读限制

修改效果1

代码逻辑

优点:简单粗暴,发帖作者和网站管理员可以直接看到自己发布的帖子

缺点:不知道自己发布的帖子阅读权限,比如付费帖子不知道购买人数

修改教程

文件位置:b2/Modules/Common/Circle.php

搜索代码:$topic_id, 'b2_currentCircle', true

在其上方添加代码:

// 修改话题阅读限制-https://www.dzw6.com/35116.html
$author_id = (int) get_post_field('post_author', $topic_id);
if ($user_id && ($author_id === (int) $user_id || user_can($user_id, 'manage_options') || user_can($user_id, 'edit_post', $topic_id))) {
return $data;
}
// 修改话题阅读限制-https://www.dzw6.com/35116.html

修改效果2

代码逻辑

圈子话题列表界面话题的阅读权限是正常显示的

只有点击到单独的话题页面,才会触发绕过阅读限制

修改教程

文件位置:b2/Modules/Common/RestApi.php

搜索代码:public static function getDataByTopicId

替换为:

//修改话题阅读限制
//通过ID获取某个话题内容
public static function getDataByTopicId($request)
{
$topic_id = (int) $request['topic_id'];
$user_id = b2_get_current_user_id();
$author_id = (int) get_post_field('post_author', $topic_id);
$circle_id = Circle::get_circle_id_by_topic_id($topic_id);
$is_admin = user_can($user_id, 'manage_options');
$is_circle_admin = Circle::is_circle_admin($user_id, $circle_id);
$can_edit = user_can($user_id, 'edit_post', $topic_id);
$can_read = $user_id && ($user_id === $author_id || $is_admin || $is_circle_admin || $can_edit);
$res = Circle::get_data_by_topic_id($topic_id, $user_id, null, $can_read);
if (isset($res['error'])) {
return new \WP_Error('circle_error', $res['error'], array('status' => 403));
} else {
return new \WP_REST_Response($res, 200);
}
}
//修改话题阅读限制

修改效果3(推荐)

效果说明

- 作者、站点管理员、圈子管理员在锁卡按钮上点击后即刻解锁:付费可见的“支付”、评论可见的“参与讨论”、等级可见的“积分升级/变更会员”、入圈可读的“加入圈子”。

- 点击后仅当前查看的这条话题内容解锁,不影响其它用户、不修改永久数据

- 普通用户完全遵循原限制逻辑。

网址卡片自动生成见:https://www.dzw6.com/35106.html

B2主题解除特定角色圈子话题阅读限制

修改教程

点击文末标签阅读更多B2主题美化修改教程!

给TA打赏
共{{data.count}}人
人已打赏
网站建设

B2主题圈子发帖自动添加网址卡片

2025-11-28 21:10:30

网站建设

纯代码实现WordPress批量创建测试用户

2025-11-29 14:32:11

🚨 小黑屋
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
搜索