wordpress如何让某个分类仅登录可见以及菜单某项仅登录可见

这几天突然想测试一个项目。我有一个网站,流量大概在1500ip/天。想赚取一点收益。想来想去,想做一个写真的分类,付费。只对登录用户开放。搜索引擎和未登录用户,直接打开文章会显示404页面。

网上找了一圈,还真没有找到什么合适的方法,倒有教程指导修改single.php。但我使用的主题,代码并不一样,无从下手。搞了大半天,最终搞定。

这里记录一下方案。

1.将某个分类目录所有文章仅登录可见,使用一个插件:Protect pages and categories with login
这个插件还是谷歌才找到的,说实话很不容易,搜英文关键词匹配到结果。
插件官方地址:https://wordpress.org/plugins/protect-pages-and-categories-with-login/
这个插件可以实现单篇文章或者单个页面仅登录可见,也可以将整个分类仅登录可见。使用方法也简单。
在分类目录的图像描述中,写上如下短代码即可。

[sp4ppcl_protect_page_with_login]

wordpress如何让某个分类仅登录可见以及菜单某项仅登录可见_图片 No.1

但是这样产生一个问题:那就是打开分类目录链接,会出现一个未定义的404页面,浏览器生成的那种,已经完全跳离了网站。并非是主题自带的404。
我的目的是想要实现跳转主题自带的404,这个404本质还是在网站上,上面可以进行提示,比如“此文章不存在或者登录后才可见哟”。
修改插件目录下的文件:
/protect-pages-and-categories-with-login/includes/plugin-class.php,将如下代码:

auth_redirect();

替换成

global $wp_query;
$wp_query->set_404();
status_header(404);
nocache_headers();
include( get_query_template( '404' ) );
die();

原插件中这是一跳向wordpress默认登录页面。替换后变成了指定了404页面。

2、在菜单栏对这个分类仅登录可见。
这用到另外一个插件:If Menu
插件官网地址:https://wordpress.org/plugins/if-menu/
这个插件可以按条件对菜单进行设置可见,比如登录可见,订阅者可见,编辑可见等,都能实现。
使用也很简单:
第1步先勾选Enable visibility rules,然后下拉框里面选择条件,我这里选择:Is logged in即可。

wordpress如何让某个分类仅登录可见以及菜单某项仅登录可见_图片 No.2

3、如何让这个分类下的文章不在首页出现。
这个结合主题来,因为我使用的是知更鸟的begin主题。自带有首页屏蔽某个分类的功能。
方法:
主题选项——>首页设置——>博客布局排除的分类文章,填上你分类的id即可。

wordpress如何让某个分类仅登录可见以及菜单某项仅登录可见_图片 No.3

最终的结果就是:
发布的写真图片文章,首页列表不会出现,但会出现在侧边栏的“最新发布”里(这点当个彩蛋留着吧,还能起引导作用),

wordpress如何让某个分类仅登录可见以及菜单某项仅登录可见_图片 No.4

但是未登录情况下,点开文章会是如下404提示:
wordpress如何让某个分类仅登录可见以及菜单某项仅登录可见_图片 No.5

————————补充后续发现一个问题————————

这个插件启动后,后面无意中发现一个问题。那就是在第二页(其他页没问题),即,https://www.xxx.com/page/2/,也会出现未登录的情况。这是个bug。
我研究了一两个小时,终于搞定了。
方法就是:加一个页码判定。如果是第二页,而不进行登录检测。
同样修改:/protect-pages-and-categories-with-login/includes/plugin-class.php
$paged = get_query_var(‘paged’);
if( has_shortcode( $description, ‘sp4ppcl_protect_page_with_login’)&&$paged!=2 )

红色加粗的部分是添加上去的。这样就解决了问题,暂时还没发现其他bug。

————————3月25日更新————————

今天一个朋友发来邮件说,启用这个分类隐藏插件之后,会出现全站都只能登录可见的情况。
我是没有遇到这种问题。也许他指的是上方提到的bug。
我当时分析是https://www.xxx.com/page/2/会被加密。其实是错误的。
它的bug是这样的:如果page/2/分页出现在第一位的文章,是属于加密分类下的。那么,这一页也会被加密。
同样,如果出现page/3/,第三页也会被加密。

这个bug我是没办法修复的。所以,我放弃了加密整个分类的做法。只对单篇文章采用登录可见。

未经允许不得转载:自学控 - 自己建站也轻松 » wordpress如何让某个分类仅登录可见以及菜单某项仅登录可见

分享到: 更多 (0)
avatar
自己建站,一点一滴积累经验。

自学控[zixuekong.com]

关于本站

登录

忘记密码 ?