文章简介
文章可以单独给不同级别设置不同权限以此来达到营收或者流量等方式,但过于繁琐,每篇文章都需要设置,能不能直接设置几个分类来实现呢?
如下所说:
分类0加入游客可见权限
分类1加入登录查看权限(兼容游客)
分类2加入登录,黄金会员查看权限(兼容游客、登录)
分类3加入登录,黄金会员、钻石会员查看权限(兼容游客、登录、黄金会员)
可以实现:目前以提出需求,看老唐愿不愿意弄吧,不愿意弄可以先按照我的方法来试试:
先看效果图:
1,未登录状态访问黄金会员和钻石会员类目提示:
![图片[2]-子比主题功能增强-给不同等级的会员设置对应的分类和页面的访问权限优知新已修正代码-IDC之家](https://9ee-net.oss-cn-guangzhou.aliyuncs.com/2025/10/20251007080029625562.webp?x-oss-process=image/auto-orient,1/quality,q_90/format,webp)
3,登录状态,已充值为黄金会员访问钻石会员界面提示:(访问黄金会员权限类目就没必要展示了已经正常访问了)
![图片[3]-子比主题功能增强-给不同等级的会员设置对应的分类和页面的访问权限优知新已修正代码-IDC之家](https://9ee-net.oss-cn-guangzhou.aliyuncs.com/2025/10/20251007080119789597.webp?x-oss-process=image/auto-orient,1/quality,q_90/format,webp)
OK!接下来看教程
不啰嗦,直接走教程:
1,首先设置好分类,记住分类ID
2,在functions.php里添加如下代码:根据注释修改自己限制的分类ID
add_action( 'template_redirect', 'ashuwp_show_only_login', 0 );
function ashuwp_show_only_login(){
global $post; // 确保$post全局变量是可用的
// 假设zib_get_user_vip_level接受用户ID作为参数
$user_id = get_current_user_id(); // 获取当前用户的ID
$vip_level = zib_get_user_vip_level($user_id); // 获取当前用户的VIP级别
// 判断登录,访问id为1的分类时会跳到111.php文件
if( in_category( array( 1865 ) ) && !is_home() && $vip_level < 1 ){
$template = locate_template( '111.php' ); // 使用locate_template查找模板文件
if ( $template ) {
include( $template ); // 包含找到的文件
} else {
// 如果没有找到模板文件,可以做一些备选操作,例如重定向或显示错误信息
wp_die( 'VIP模板文件未找方法到。' );
}
exit; // 退出脚本执行
}
// 判断登录,访问id为4的分类时会跳到222.php文件
if( in_category( array( 4 ) ) && !is_home() && $vip_level < 2 ){
$template = locate_template( '222.php' ); // 使用locate_template查找模板文件
if ( $template ) {
include( $template ); // 包含找到的文件
} else {
// 如果没有找到模板文件,可以做一些备选操作
wp_die( 'VIP模板文件未找到。' );
}
exit; // 退出脚本执行
}
}
假设 111.php 文件位于主题根目录,那就是这个代码
在使用 locate_template 函数时,您不需要提供完整的文件路径,因为它会在当前激活的主题的目录结构中进行搜索。locate_template 函数默认会在主题根目录、子目录以及父级主题的目录中搜索指定的模板文件。[content_hide]
但是我还是喜欢新建独立的文件夹放文件所以我们要换个方式加载文件
$file = './wp-content/themes/zibllsucai/php/111.php';
// 判断登录,访问id为1865的分类时会跳到111.php文件
if ( in_category( array( 1865 ) ) && !is_home() && $vip_level < 1 ) {
if ( file_exists( $file ) ) {
include( $file ); // 包含找到的文件
} else {
// 如果没有找到模板文件,可以做一些备选操作,例如重定向或显示错误信息
wp_die( 'VIP模板文等等件未找到。' );
}
exit; // 退出脚本执行
}
3,在主题根目录里添加2个PHP文件,名字分别命名为111.php和222.php
111.php里面的代码设置为:
<?php get_header(); ?>
<div class="container-fluid container-footer">
<center><div class="wp-block-image"><figure class="size-large is-resized"><img src="/svg/stop.svg" width="10%" height="10%"/></figure></div><center>
<!--未登录提示-->
<?php if (!is_user_logged_in()){
echo ' <div class="mb20 wp-posts-content"><div class="hide-post mt6"><div class=""><button><span><i class="fa fa-unlock-alt mr6"></i>未授权!该区域需要登录!</span><div class="liquid"></div></button></div>';
echo '<div class="flex jc" style="min-height:30vh;">';
echo zib_get_nocan_info($cuid, 'watermark', '你还没有登录');
echo '</div>';
}?>
<!--会员1级以下提示-->
<?php if (is_user_logged_in() && zib_get_user_vip_level($vip_level)<1){
echo '<div class="mb20 wp-posts-content">
<div class="hide-post mt6">
<div class="">
<i class="fa fa-unlock-alt mr6"></i>权限不足</div><div class="text-center em09 mt20"><p class="separator muted-3-color mb20">以下用户组可使用</p><p><a class="but mm3 pay-vip" vip-level="1" href="javascript:;" rel="external nofollow" rel="external nofollow" ><img class="img-icon mr6 em12 ls-is-cached lazyloaded" src="/wp-content/themes/zibll/img/vip-1.svg" data-src="/wp-content/themes/zibll/img/vip-1.svg" data-toggle="tooltip" title="" data-original-title="正式工">正式工及以上级别(点击升级)</a></p>
</div>
</div>
<div data-quantity="1" data-radius="false" style="text-align:center" class="wp-block-zibllblock-buttons"><span class="an_1 but jb-yellow">赞助商介绍<a href="http://about" rel="external nofollow" rel="external nofollow" data-type="URL" data-id="about" target="_blank" rel="noreferrer noopener"></a>商介绍</span></div>
</div>';
} ?>
</div>
<?php get_footer(); ?>
222.php里面的代码设置为:
<?php get_header(); ?>
<div class="container-fluid container-footer">
<center><div class="wp-block-image"><figure class="size-large is-resized"><img src="/svg/stop.svg" width="10%" height="10%"/></figure></div><center>
<!--未登录提示-->
<?php if (!is_user_logged_in()){
echo ' <div class="mb20 wp-posts-content"><div class="hide-post mt6"><div class=""><button><span><i class="fa fa-unlock-alt mr6"></i>未授权!该区域需要登录!</span><div class="liquid"></div></button></div>';
echo '<div class="flex jc" style="min-height:30vh;">';
echo zib_get_nocan_info($cuid, 'watermark', '你还没有登录');
echo '</div>';
}?>
<!--会员1级以下提示-->
<?php if (is_user_logged_in() && zib_get_user_vip_level($vip_level)<2){
echo '<div class="mb20 wp-posts-content">
<div class="hide-post mt6">
<div class=""><i class="fa fa-unlock-alt mr6"></i>权限不足</div>
<div class="text-center em09 mt20">
<p class="separator muted-3-color mb20">以下用户组可使用</p><p><a class="but mm3 pay-vip" vip-level="1" href="javascript:;" rel="external nofollow" rel="external nofollow" ><img class="img-icon mr6 em12 ls-is-cached lazyloaded" src="/wp-content/themes/zibll/img/vip-2.svg" data-src="/wp-content/themes/zibll/img/vip-2.svg" data-toggle="tooltip" title="" data-original-title="董事会">董事会及以上级别(点击升级)</a></p>
</div>
</div>
<div data-quantity="1" data-radius="false" style="text-align:center" class="wp-block-zibllblock-buttons"><span class="an_1 but jb-yellow">赞助商介绍<a href="http://about" rel="external nofollow" rel="external nofollow" data-type="URL" data-id="about" target="_blank" rel="noreferrer noopener"></a>商介绍</span></div>
</div>
';
} ?>
</div>
<?php get_footer(); ?>
[/content_hide]最后就搞定了!简单明了,可能会出现CSS错乱等现象,看着调试就行了,这个想必很简单。
该教程适用其他主题,只要改zib_get_user_vip_level($vip_level)<1)这个为对应的就行了。
注意事项:
以上级别对应的是黄金会员或钻石会员以及登录状态,子比主题里有账号等级之分,这个是评论等提示出来的,如果需要这样的级别来区分的话,只需要改下里面的级别识别代码就行了。
觉得不错的赞助个万儿八千的吧O(∩_∩)O哈哈~!!













暂无评论内容