WordPress登录后才可以查看网站内容,代码

wordpress登录才能查看网站内容,未登录就跳转到登录页面。有这样需求的人还不少,有的可能是资料类什么的,有的人就是用来搞擦边球。

实现代码很简单,找一个全站一定会执行的钩子即可,这里我们就选了一个template_redirect钩子,这个动作钩子在加载模板时执行,当然其它很多都可以用。

<?php
//template_redirect动作钩子是一定会执行的,所以用这个钩子对全站有效
add_action( 'template_redirect', 'ashuwp_show_only_login', 0 );
function ashuwp_show_only_login(){
  //判断登录
  if( !is_user_logged_in() ){
    auth_redirect(); //跳转到登录页面
        exit();
  }
}

原代码只允许未登录者访问指定的页面或者直接跳转到登录。

简单改一下,加个判断in_category,只允许访问指定分类的归档页面和文章。

// 首页和指定分类文章可以访问
add_action( 'template_redirect', 'ashuwp_show_only_login', 0 );
function ashuwp_show_only_login(){
	//判断登录,只允许访问ID为3和2的分类文章
	if( !in_category( array( 3,2 ) ) && !is_home() && !is_user_logged_in() ){
		auth_redirect(); //跳转到登录页面
		exit();
	}
}

默认未登录者只允许访问网站首页和分类id为3和2的分类归档页面和文章,否则跳转到登录页面。

把 !in_category 前面的感叹号去掉改成 in_category,则正好相反,访问分类ID为3和2的分类文章跳转到登录,其它文章可以正常访问。

使用方法

代码添加到主题函数模板functions.php中。

给WordPress插入检测在线人数代码

效果图

代码部署

//检测在线人数
function counter_user_online($temp){
$user_online = "count.txt"; //保存人数的文件,网站根目录下
touch($user_online);//如果没有此文件,则创建
$timeout = 120;//120 秒内没动作者,认为掉线
$user_arr = file_get_contents($user_online);
$user_arr = explode('#',rtrim($user_arr,'#'));
$temp = array();
foreach($user_arr as $value){
$user = explode(",",trim($value));
if (($user[0] != getenv('REMOTE_ADDR')) && ($user[1] > time())) { //如果不是本用户 IP 并时间没有超时则放入到数组中
array_push($temp,$user[0].",".$user[1]);
}
}
array_push($temp,getenv('REMOTE_ADDR').",".(time() + ($timeout)).'#'); //保存本用户的信息
$user_arr = implode("#",$temp);
//写入文件
$fp = fopen($user_online,"w");
flock($fp,LOCK_EX); //flock() 不能在 NFS 以及其他的一些网络文件系统中正常工作
fputs($fp,$user_arr);
flock($fp,LOCK_UN);
fclose($fp);
echo count($temp);
}
//检测在线人数结束

使用方法

把以上代码放入主题的 functions.php文件里,然后在调用函数放到你要放置的位置,正常都会把这个放到footer底部文件夹里的,西瓜君在这儿就放到底部文件夹里了,

调用函数

当前在线<?php counter_user_online($temp); ?> 位小伙伴
放置位置

给wordpress添加彩色标签云,代码

wordpress网站做久了以后,标签tag也会积累得越来越多,为了方便统计和浏览,我们可以给tag加上标签云,在前台显示出来,今天西瓜君就带大家一起来看看吧。

1、调用标签云

我们可以用wp_tag_cloud()这个wordpress的默认函数来调用标签云,下面的代码可以实现:

<?php   wp_tag_cloud('smallest=12&largest=18&unit=px&number=0&orderby=count&order=DESC');?>

 参数解释

smallest表示标签的最小字号

largest表示最大字号

unit=px表示字体使用像素单位

number=0表示显示所有标签,如果为40,表示显示40个

orderby=count表示按照标签所关联的文章数来排列

order=DESC表示降序排序(ASC表示升序排序,DESC表示降序排序)

更多 wp_tag_cloud() 参数,请参考 WordPress文档 wp tag cloud

2、给tag加上颜色

我们通过上面的代码,已经可以调用表群晕了,然后我们再把下面的代码放进主题的functions.php文件的最后:

//彩色标签云

function colorCloud($text) {

$text = preg_replace_callback('|<a (.+?)>|i','colorCloudCallback', $text);

return $text;

}

function colorCloudCallback($matches) {

$text = $matches[1];

$color = dechex(rand(0,16777215));

$pattern = '/style=('|”)(.*)('|”)/i';

$text = preg_replace($pattern, "style="color:#{$color};$2;"", $text);

return "<a $text>";

}

add_filter('wp_tag_cloud', 'colorCloud', 1);

3、在侧边栏调用标签云

你可以用下面的函数来调用标签云,但是具体怎么修改,只能自己研究了,因为wordpress每个主题都不一样:

<?php wp_tag_cloud('smallest=12&largest=18&unit=px&number=20');?>

国内大部分主题都是支持边栏小工具的,你可以先看看小工具里有没有彩色标签云,如果有的话,你可以忽略上面所有步骤,直接添加就好。