运营资源站或会员站的站长们可能都遇到过这样一个痛点:为了吸引用户充值VIP,我们将大量优质资源设置为了“VIP会员免费下载”。这确实提升了会员的转化率,但也带来了一个副作用——网站变得“静悄悄”的。VIP用户登录后,直接拿走资源就离开了,既不留言也不互动,导致网站虽然流量不错,但评论区却门可罗雀,缺乏人气。
在WordPress子比主题(Zibll)的原生设置中,通常只能选择“付费下载”或者“评论查看”,很难兼顾“VIP免费”与“强制评论”这两个逻辑。
今天为大家分享两段代码,完美解决这个问题。通过这个设置,即便用户拥有VIP免费下载权限,系统也会拦截下载链接,强制提示用户“评论本文后刷新页面才能获取”。这不仅能保障会员权益,更能极大地激活社区氛围。
据主题铺观察,适当的互动门槛能显著提升网站的SEO表现和用户粘性,因为搜索引擎非常喜欢活跃的评论区。
下面来看看具体的实现效果和代码。
实现效果预览
添加代码后,当符合条件的VIP用户访问资源页时,原本直接显示的下载按钮会被替换为如下的精美提示框(未登录或无权用户不受影响):
![图片[1]-WordPress子比主题免费资源须评论才查看的设置教程-主题铺](https://cdn.zhutipu.com/wp-content/uploads/2026/01/20260115110200453.png/ztp)
我们提供了两种方案,大家可以根据自己的运营策略任选其一。
方案一:全局生效版(强烈推荐)
此方案适用于希望全站激活互动的站点。一旦部署,所有设置为“VIP免费”的资源,VIP用户都必须评论后才能看到下载地址。
代码逻辑分析:
- 判断当前用户是否登录。
- 判断当前用户对该资源是否拥有“VIP免费”权限(排除单独购买的用户)。
- 查询该用户在当前文章下是否有已审核通过的评论。
- 如果没有评论,则拦截原本的下载内容,输出引导评论的提示框。
将以下代码添加到主题的 functions.php 文件或 func.php 文件中:
/**
* 【全局版】子比主题定制:VIP免费资源强制评论后才能下载
*/
add_filter('zibpay_posts_paid_box', 'zibll_vip_free_global_must_comment', 10, 3);
function zibll_vip_free_global_must_comment($html, $pay_mate, $post_id) {
// 1. 获取当前用户
$user_id = get_current_user_id();
if (!$user_id) return $html;
// 2. 获取权限状态
$paid = zibpay_is_paid($post_id, $user_id);
// 3. 核心判断:必须是 VIP且免费 类型 (排除单独购买的用户)
// 只有当用户是因为VIP身份获得免费权限时才拦截
if ($paid && isset($paid['paid_type']) && strpos($paid['paid_type'], 'vip') !== false && strpos($paid['paid_type'], 'free') !== false) {
// 4. 检查是否已评论 (状态为 approve 即已审核)
$args = array(
'user_id' => $user_id,
'post_id' => $post_id,
'count' => true,
'status' => 'approve'
);
$comment_count = get_comments($args);
// 5. 拦截:未评论则显示美化后的提示框
if ($comment_count == 0) {
// 使用子比主题自带的空状态图标
$icon_url = ZIB_TEMPLATE_DIRECTORY_URI . '/img/null-2.svg';
// 美化样式:VIP淡金背景 + 虚线边框,符合VIP身份调性
$box_style = 'background: linear-gradient(135deg, #fffdf5 0%, #fff 100%); border: 2px dashed #e8dcb6; border-radius: 8px;';
$new_html = '<div class="zib-widget pay-box" id="posts-pay" style="'.$box_style.'">';
$new_html .= '<div class="text-center padding-20 box-body">';
// 图标展示
$new_html .= '<div class="mb20"><img style="width:160px; opacity:0.8;" src="' . $icon_url . '"></div>';
// 标题和文案提示
$new_html .= '<div class="em12 mb10 c-yellow font-bold"><i class="fa fa-diamond mr6"></i>VIP 专享资源</div>';
$new_html .= '<div class="muted-2-color mb20" style="font-size:13px;">您拥有免费下载权限<br>为了社区活跃,请 <b>评论本文</b> 后刷新页面获取!</div>';
// 跳转评论区按钮,带平滑滚动效果
$new_html .= '<a href="#respond" onclick="if(document.getElementById(\'respond\')){document.getElementById(\'respond\').scrollIntoView({behavior:\'smooth\'});return false;}else{window.location.href=\'#respond\';}" class="but jb-yellow padding-lg radius"><i class="fa fa-commenting-o mr6"></i>前往评论</a>';
$new_html .= '</div></div>';
// 返回拦截后的HTML
return $new_html;
}
}
// 不满足条件则返回原始内容
return $html;
}方案二:特定文章版(灵活控制)
如果你担心强制所有文章都评论会引起VIP用户的反感,主题铺建议使用这个方案。你只需要将特定的、高价值的资源ID填入代码中,仅对这些文章开启“强制评论”。
配置说明:
在代码中的 $target_ids 数组里填入文章ID,多个ID用逗号隔开即可。
/**
* 【指定文章版】子比主题定制:指定文章VIP免费强制评论
*/
add_filter('zibpay_posts_paid_box', 'zibll_vip_free_specific_must_comment', 10, 3);
function zibll_vip_free_specific_must_comment($html, $pay_mate, $post_id) {
// =======================================================
// 🟢 配置区域:在这里填写文章ID,逗号隔开
// 例如:array(101, 205, 3006);
// =======================================================
$target_ids = array(1234, 5678, 8888);
// 1. 如果当前文章ID不在目标数组中,直接忽略,显示原下载链接
if (!in_array($post_id, $target_ids)) {
return $html;
}
// 2. 获取当前用户
$user_id = get_current_user_id();
if (!$user_id) return $html;
// 3. 获取权限状态
$paid = zibpay_is_paid($post_id, $user_id);
// 4. 核心判断:必须是 VIP且免费 类型
if ($paid && isset($paid['paid_type']) && strpos($paid['paid_type'], 'vip') !== false && strpos($paid['paid_type'], 'free') !== false) {
// 5. 检查是否已评论
$args = array(
'user_id' => $user_id,
'post_id' => $post_id,
'count' => true,
'status' => 'approve'
);
$comment_count = get_comments($args);
// 6. 拦截:未评论则显示美化后的提示框
if ($comment_count == 0) {
$icon_url = ZIB_TEMPLATE_DIRECTORY_URI . '/img/null-2.svg';
// 美化样式
$box_style = 'background: linear-gradient(135deg, #fffdf5 0%, #fff 100%); border: 2px dashed #e8dcb6; border-radius: 8px;';
$new_html = '<div class="zib-widget pay-box" id="posts-pay" style="'.$box_style.'">';
$new_html .= '<div class="text-center padding-20 box-body">';
// 图片
$new_html .= '<div class="mb20"><img style="width:160px; opacity:0.8;" src="' . $icon_url . '"></div>';
// 文案
$new_html .= '<div class="em12 mb10 c-yellow font-bold"><i class="fa fa-diamond mr6"></i>VIP 专享资源</div>';
$new_html .= '<div class="muted-2-color mb20" style="font-size:13px;">本资源为热门资源<br>VIP用户请 <b>评论本文</b> 后刷新页面下载!</div>';
// 按钮
$new_html .= '<a href="#respond" onclick="if(document.getElementById(\'respond\')){document.getElementById(\'respond\').scrollIntoView({behavior:\'smooth\'});return false;}else{window.location.href=\'#respond\';}" class="but jb-yellow padding-lg radius"><i class="fa fa-commenting-o mr6"></i>前往评论</a>';
$new_html .= '</div></div>';
return $new_html;
}
}
return $html;
}使用教程
- 进入后台:登录你的WordPress后台。
- 找到编辑器:进入
外观->主题文件编辑器。 - 选择文件:在右侧文件列表中找到
functions.php(主题函数文件),子比主题推荐优先添加到func.php(如果有的话,通常在主题根目录或者通过子主题添加),这样更为规范。或者,你也可以使用Code Snippets等代码片段插件来管理,这样更加安全,防止主题更新覆盖代码。 - 粘贴代码:将上面选择的任意一种方案的代码复制粘贴到文件末尾。
- 保存生效:点击“更新文件”即可。
通过以上简单的设置,你就可以在不影响普通购买用户体验的前提下,有效地调动VIP会员的积极性,让你的网站评论区重新热闹起来。
















暂无评论内容