看到一篇给子比主题文章分类设置未登录禁止访问的文章,深受启发,于是便写了一个更高级的文章分类权限功能,可选权限类型有:注册用户可见、所有会员可见、二级会员可见。
废话不多说先看图
一、子比主题根目录下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,
),
),
如果你之前没用过我的自定义后台选项代码,那么还需要在上述代码之前插入下面的代码
