看到一篇给子比主题文章分类设置未登录禁止访问的文章,深受启发,于是便写了一个更高级的文章分类权限功能,可选权限类型有:注册用户可见、所有会员可见、二级会员可见。

废话不多说先看图

一、子比主题根目录下func.php或functions.php中插入以下代码(代码中的noauth.svg请自行替换,路径也可自行指定)

//指定文章分类设置可见权限开始
function zuoxm_cat_login_show($content){
    if (_pz('ZUOXM_LOGIN_SHOW_OPEN')){
        $category_ids = _pz('ZUOXM_LOGIN_SHOW_CAT_OBJ');
        if (empty($category_ids)) {
            // 如果分类ID数组为空,则不执行任何操作
            return $content;
        }
        $page_link = get_permalink( $page_id );
        $type=_pz('ZUOXM_LOGIN_SHOW_TYPE');
        $type_text = array(
          'vip1'     => _pz('pay_user_vip_1_name') .'及'._pz('pay_user_vip_2_name'). '可见',
            'vip2'     => '仅'._pz('pay_user_vip_2_name') . '可见',
        );
        $user_id   = get_current_user_id();
        if (is_single() && has_category($category_ids)) { // 检查文章是否属于这些分类
            switch ($type){
               case 'reg_user' :
                    if (!is_user_logged_in()) {
                        $content = '<div class="f404">
                            <img src="' . ZIB_TEMPLATE_DIRECTORY_URI . '/img/noauth.svg"><div class="hidden-box"><a class="hidden-text signin-loader" href="javascript:;"><i class="fa fa-exclamation-circle"></i>  本文仅【注册用户】查看,' . $type_text['vip' . $vip_l] . '<br><i class="fa fa-sign-in"></i>  请登录或注册后查看</a></div></div>';
                    }
                    break;
                case 'vip1' :
                case 'vip2' :
                    $vip_level = (int) zib_get_user_vip_level($user_id);
                    
                    if ('vip1' == $type) {
                        $vip_l = 1;
                    } else {
                        $vip_l = 2;
                    }
                    if ($user_id > 0) {
                        if (!$vip_level) {
                            $content = '<div class="f404">
                                <img src="' . ZIB_TEMPLATE_DIRECTORY_URI . '/img/noauth.svg"><div class="hidden-box"><a class="hidden-text pay-vip" vip-level="' . $vip_l . '" href="javascript:;"><i class="fa fa-exclamation-circle"></i>  本文仅【<span style="font-weight:bold;color:green;">' . $type_text['vip' . $vip_l] . '</span>】<br><i class="fa fa-diamond"></i>  请<span style="font-weight:bold;color:#2750e5;">开通会员</span>后查看</a></div></div>';
                        } elseif ($vip_level < $vip_l) {
                            $content = '<div class="f404">
                                <img src="' . ZIB_TEMPLATE_DIRECTORY_URI . '/img/noauth.svg"><div class="hidden-box"><a class="hidden-text pay-vip" vip-level="' . $vip_l . '" href="javascript:;"><i class="fa fa-exclamation-circle"></i>  本文仅【<span style="font-weight:bold;color:#2750e5;">' . $type_text['vip' . $vip_l] . '</span>】<br><i class="fa fa-diamond"></i>  请升级会员后查看</a></div></div>';
                        }
                    } else {
                        $content = '<div class="f404">
                                <img src="' . ZIB_TEMPLATE_DIRECTORY_URI . '/img/noauth.svg"><div class="hidden-box"><a class="hidden-text signin-loader" href="javascript:;"><i class="fa fa-exclamation-circle"></i>  本文仅【<span style="font-weight:bold;color:#2750e5;">' . $type_text['vip' . $vip_l] . '</span>】<br><i class="fa fa-sign-in"></i>  请登录后查看特权</a></div></div>';
                    }
                    break;
            }
        }

        return $content;
    } 
}
add_filter('the_content', 'zuoxm_cat_login_show');
//指定文章分类设置可见权限结束

二、后台选项(可放到func.php中)

CSF::createSection($prefix, array(
    'parent' => 'ZUOXM_CUSTOMIZE',
    'id' => 'ZUOXM_QTMH',
    'title' => '其它杂项美化',
    'icon'  => 'fa fa-fw fa-windows',
    'description' => '',
    'fields' => array(
        array(
            'id'    => 'ZUOXM_LOGIN_SHOW_OPEN',
            'type'  => 'switcher',
            'title' => '文章分类登录可见开关',
            'label'=>'是否启用登录可见功能开关',
            'desc' => '打开开关就启用指定文章分类登录可见',
            'default' => '0',
        ),
        array(
            'dependency'  => array('ZUOXM_LOGIN_SHOW_OPEN', '!=', ''),
            'id'    => 'ZUOXM_LOGIN_SHOW_TYPE',
            'type'  => 'radio',
            'inline'     => true,
            'title' => '可见用户级别',
            'subtitle'=>'选择可见用户级别',
            'desc' => '设置可见用户的级别',
            'default' => 'reg_user',
            'options'    => array(
                'reg_user'       => __('注册用户可见'),
                'vip1' => __('所有会员可见'),
                'vip2'    => __('二级会员可见'),
            ),
        ),
        array(
            'dependency'  => array('ZUOXM_LOGIN_SHOW_OPEN', '!=', ''),
            'id'          => 'ZUOXM_LOGIN_SHOW_CAT_OBJ',
            'title'       => '选择需限制的文章分类',
            'default'     => '',
            'class'       => 'compact',
            'desc'        => '选择加入登录可见的文章分类,注意没有文章的分类不会显示',
            'placeholder' => '选择加入登录可见的文章分类',
            'options'     => 'categories',
            'type'        => 'select',
            'chosen'      => true,
            'multiple'    => true,
            'sortable'    => true,
        ),
    ),

如果你之前没用过我的自定义后台选项代码,那么还需要在上述代码之前插入下面的代码

$prefix = 'zibll_options';//如果是子比7.7以下的则本行可不写,但写了也没问题
//CSF后台选项开始 zuoxm
CSF::createSection($prefix, array(
    'id'    => 'ZUOXM_CUSTOMIZE',
    'title' => '工具箱&美化',
    'icon'  => 'fa fa-fw fa-puzzle-piece',
));
hmoban主题是根据ripro二开的主题,极致后台体验,无插件,集成会员系统
双柚主题 » WordPress子比主题给文章分类设置访问权限功能代码