用WordPress做一个非公开的Blog

有可能出于某种需要,你的blog不想公开,只想让自己或者特定的几个人浏览,那么你该怎么办呢?当然,你可以给每篇文章的状态都设为“私人”或者加上密码,但是这样显然太麻烦了。而且万一哪篇文章忘记了,不就被公开了吗?太不保险。有没有简单又保险的办法把整个blog保护起来呢?我们只要对模板文件加以修改即可。

在模板文件的head.php的最开头加上验证的代码就可以实现这一功能,代码如下:

<?php
 global $user_identity,$user_level;
 get_currentuserinfo();
 if (!$user_identity) {
  header("location:/wp-login.php");
  break;
 }
?>

这段代码的意思就是看当前浏览者是否注册用户,如果不是注册用户就跳转到登录页面。当然,你还要在设置里面关闭用户注册(默认是关闭状态)。

稍微复杂点,你也可以对不同等级的用户进行限制,只要利用$user_level进行判断即可。

Administrator:$user_level=10
Editor:$user_level=7
Author:$user_level=2
Contributor :$user_level=1
Subscriber:$user_level=0

对了,千万别忘了把feed也保密起来,不然可就全露馅儿了。这一步也很简单,把wp-feed.php处理一下就得了,删除或改名或者把内容注释掉都行。

使用这种方法你还可以实现对某个分类的保密,这时就要用上in_category()这一函数,不多说了。

奴化太有效,夏瑜不可悲

在鲁迅先生的《药》里讲到了一个革命者夏瑜,他因为参与了辛亥革命而被砍头,华老栓还用馒头蘸了他的血来给儿子治病。最可悲的是“群众”对他的献身毫不理解,认为他所说的“天下是天下人的天下”是疯话。

现在时代不同了,用人血来治病应当不会有了吧。但是天下仍然不是天下人的天下,极权政府仍然在肆意侵害民权,GFW就是最好的证明。虽经无数先烈抛头颅洒热血,民权仍然不得伸张,这还不是最可悲的。可悲的是,现在的独裁者已经从他们的前辈那边汲取了经验、总结了教训,奴化工作开展得卓有成效。“群众”们不再仅仅停留在不理解、不理睬的程度,而是开始抱怨了!

抱怨什么呢?谈论国事的人听好了:你们说些什么我不爱理,但是政府有GFW,如果网站被封了你们也是王八蛋!还有更厉害的骂法。如果GFW封了一个又一个网站,那就反映出你们的险恶用心了,你们这是在搞政治讹诈

把这种逻辑如果放到六&*^四,我在街上被流弹误伤了,显然学生也是王八蛋!他们不起来闹事,政府也就不会开枪了!显然,学生和政府在搞双重讹诈了。所以说,学生被毙不但不值得同情,而且还可恶,有本事你让子弹只打在你们自己身上啊!——瞧瞧,和现在的群众比起来,夏瑜遇到的算好的啦。

唉,虽然也有点不同的声音,但是总体来说奴化教育还是有效的。只要让群众认为政治是别人的事,与己无关,独裁者们就可以慢慢地宰割奴役他们了。这就叫“几年家软刀子割头不觉死,只等得太白旗悬才知道命有差”。

独裁者在进化,群众在退化。奴化太有效,夏瑜不可悲。

WordPress首页显示摘要的修改方法

常常会有这样的情况:有的文章太长(比如包含很多图片或好多行源码的文章)不适合在首页显示全文,有的文章不长首页显示全文即可。因此我们希望文章如果有摘要首页就显示摘要,否则就显示全文。这个要求很合理吧,可惜Wordpress不能实现,必须小小地hack一下。Google后发现其他人也有提出这个问题,但是并没有人真正解决这个问题。我在Wordpress的源码里爬了半天,从函数调用之间跳来跳去,终于弄明白了。废话不多说,直接说结果。

首先,在模板文件里把index.php中的the_content改为the_excerpt。这样它就会显示摘要了。

接下来,修改wp-includes目录下的formatting.php这一文件。找到其中的wp_trim_excerpt函数:

function wp_trim_excerpt($text) { // Fakes an excerpt if needed
 global $post;
 if ( '' == $text ) {
  $text = get_the_content('');
  $text = apply_filters('the_content', $text);
  $text = str_replace(']]>', ']]>', $text);
  $text = strip_tags($text);
  $excerpt_length = 55;
  $words = explode(' ', $text, $excerpt_length + 1);
  if (count($words) > $excerpt_length) {
   array_pop($words);
   array_push($words, '[...]');
   $text = implode(' ', $words);
  }
 }
 return $text;

看到“55”了吗?它就是罪魁祸首,就是它把全文截出了前55个字符变成了摘要。它上面一行也不是好东西,使得摘要只能显示纯文本格式。我们现在要做的就是把无用的代码去除。当然不用删掉,只要注释掉即可。结果如下:

function wp_trim_excerpt($text) { // Fakes an excerpt if needed
 global $post;
 if ( '' == $text ) {
  $text = get_the_content('');
  $text = apply_filters('the_content', $text);
  $text = str_replace(']]>', ']]>', $text);
/*
  $text = strip_tags($text);
  $excerpt_length = 55;
  $words = explode(' ', $text, $excerpt_length + 1);
  if (count($words) > $excerpt_length) {
   array_pop($words);
   array_push($words, '[...]');
   $text = implode(' ', $words);
  }
*/
 }
 return $text;
}

请放心,这一修改对数据库中的数据没有任何影响。

导出黑莓电话簿的方法

如果黑莓不用了,想用其他手机,怎样把黑莓的电话簿导出来呢?可以使用“桌面管理器”把黑莓的电话簿导出为文本或其它格式。

具体步骤请看下面的图片:

bb-export1.JPG

bb-export2.JPG

bb-export3.JPG

bb-export4.JPG

bb-export5.JPG

清除黑莓电话簿的方法

黑莓用了一段时间,有朋友要借去玩玩,怎么清除黑莓电话簿里的联系人记录呢?总不至于一个个手工删除吧?连接电脑以后可以使用“桌面管理器”一次性删除所有联系人。

具体步骤请看下面的图片:

bb-clear1.JPG

bb-clear2.JPG

bb-clear3.JPG

Drupal连接超时的解决办法

今天我的一个drupal构建的网站忽然无法连接,显示以下出错代码:

Fatal error: Maximum execution time of 30 seconds exceeded in
\includes\session.inc on line 56

尝试着用phpMyadmin到数据库里面禁用了几个可能引起超时的插件,无济于事。

猜想可能和session有关。反正session数据没有什么用处,因此直接清空了sessions数据表。问题解决。

在WordPress里粘贴源代码的办法

在Wordpress里面直接粘贴源代码是不行的。在可视化模式下,会出现把引号变成大引号等问题;在源代码模式下粘贴源代码是不能被正确显示的,除非你把所有的特殊符号都手工转换,比如“>”符号转换成“&gt;”。

为什么会出现这样的状况呢?毛病在于Wordpress里面的可视化编辑器功能不够完整,源代码模式下是有“code”这一的按钮的,而在可视化模式下却没有相应的按钮。显然就无法实现应有的功能了。

怎样才能粘贴源代码呢?有一个取巧的方法。先在源代码模式下输入“<code>asd</code>”,其中的“asd”是任意的普通字符;然后再切换到可视化模式,就可以直接粘贴源代码了,这时可视化编辑器会自动实现特殊符号的转换。

用CSS美化tags cloud

一般来说tags cloud会利用颜色和字号的变化来显示tag之间的相对权重,这本来是很有意思的一件事,但tags cloud常常会变得比较难看。

主要有三个因素:

  1. 词和词之间靠得太紧密,这可以利用word-spacing来调整;
  2. 行和行之间靠得太紧密,这可以利用line-height来调整;
  3. tag换行这也比较讨厌,我们希望一个tag保留在一行内,不要拆成两行,这可以利用word-break和word-wrap来调整;

我使用UTW3作为tag插件,使用了以下代码来显示tag cloud:

<div style="line-height:600%;word-break:keep-all;word-wrap:normal;word-spacing:30px;">
<?php UTW_ShowWeightedTagSetAlphabetical("coloredsizedtagcloud","",0) ?>
</div>

可以到我的tags cloud页面看看效果。

返回顶部