WordPress子比主题免费资源须评论才查看的设置教程

AI 智能摘要
今天为大家分享两段代码,完美解决这个问题。通过这个设置,即便用户拥有VIP免费下载权限,系统也会拦截下载链接,强制提示用户“评论本文后刷新页面才能获取”。这不仅能保障会员权益,更能极大地激活社区氛围。

运营资源站或会员站的站长们可能都遇到过这样一个痛点:为了吸引用户充值VIP,我们将大量优质资源设置为了“VIP会员免费下载”。这确实提升了会员的转化率,但也带来了一个副作用——网站变得“静悄悄”的。VIP用户登录后,直接拿走资源就离开了,既不留言也不互动,导致网站虽然流量不错,但评论区却门可罗雀,缺乏人气。

在WordPress子比主题(Zibll)的原生设置中,通常只能选择“付费下载”或者“评论查看”,很难兼顾“VIP免费”与“强制评论”这两个逻辑。

今天为大家分享两段代码,完美解决这个问题。通过这个设置,即便用户拥有VIP免费下载权限,系统也会拦截下载链接,强制提示用户“评论本文后刷新页面才能获取”。这不仅能保障会员权益,更能极大地激活社区氛围。

据主题铺观察,适当的互动门槛能显著提升网站的SEO表现和用户粘性,因为搜索引擎非常喜欢活跃的评论区。

下面来看看具体的实现效果和代码。

实现效果预览

添加代码后,当符合条件的VIP用户访问资源页时,原本直接显示的下载按钮会被替换为如下的精美提示框(未登录或无权用户不受影响):

图片[1]-WordPress子比主题免费资源须评论才查看的设置教程-主题铺

我们提供了两种方案,大家可以根据自己的运营策略任选其一。


方案一:全局生效版(强烈推荐)

此方案适用于希望全站激活互动的站点。一旦部署,所有设置为“VIP免费”的资源,VIP用户都必须评论后才能看到下载地址。

代码逻辑分析:

  1. 判断当前用户是否登录。
  2. 判断当前用户对该资源是否拥有“VIP免费”权限(排除单独购买的用户)。
  3. 查询该用户在当前文章下是否有已审核通过的评论。
  4. 如果没有评论,则拦截原本的下载内容,输出引导评论的提示框。

将以下代码添加到主题的 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;
}

使用教程

  1. 进入后台:登录你的WordPress后台。
  2. 找到编辑器:进入 外观 -> 主题文件编辑器
  3. 选择文件:在右侧文件列表中找到 functions.php (主题函数文件),子比主题推荐优先添加到 func.php (如果有的话,通常在主题根目录或者通过子主题添加),这样更为规范。或者,你也可以使用 Code Snippets 等代码片段插件来管理,这样更加安全,防止主题更新覆盖代码。
  4. 粘贴代码:将上面选择的任意一种方案的代码复制粘贴到文件末尾。
  5. 保存生效:点击“更新文件”即可。

通过以上简单的设置,你就可以在不影响普通购买用户体验的前提下,有效地调动VIP会员的积极性,让你的网站评论区重新热闹起来。

© 版权声明
THE END
喜欢就支持一下吧
点赞10 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容