没用的WP自带插件“Hello Dolly”!

     试了试 WP 自带插件 Hello Dolly

      话说我的博客到目前为止一共装了 16 个插件,其中有一个插件,从我安装了 WordPress 的第一天起就存在了的,但是知道现在已经九个月了,从来没有启用过。这个插件就是 WordPress 自带的插件 Hello Dolly。今天处于好奇,就把这个插件开启了,结果发现这是一个一点用处都没有的插件。

      由于刚刚开始安装 WordPress 的时候,知识欠缺,一直不敢删除自带的插件,后来忘了这回事没有多管过。于是 Hello Dolly 就长存于博客中了。最近才注意了这个插件,但是一直不想试用,所以一拖再拖。       前几天在逛“WordPress 中文论坛”插件区的时候,看到了了有一个人问这个插件是怎么使用的,我觉得很新鲜,也许是对自己博客很有用的插件呢?因为 WordPress 自带的插件不可能一点用都没有的。进去了看了看回复,把我吓了一跳,这个插件的功能是:启用之后,在后台的右上角随机显示《Hello Dolly》这首歌的歌词一句。这个叫什么功能啊?       后来又看到了评论,说这是 WordPress 的开发者 Matt 最喜欢的一首歌,据说当初 Matt 听了此歌就有了志向,于是开发了 WordPress,这个插件估计用处就是激发用户多制作插件。今天带着好奇心,到了后台的插件管理页面,启用了这个插件。       后台右上角果然出现了歌词,只不过都是英文,根本看不懂。
      就是那么个简单的东西,对于一般的普通用户来说,此插件一点用没有。倒是有人把歌词换成过名言警句,但是只能在后台显示,给自己看!每个 WordPress 用户进入后台都有自己的目的,而不是进来看名言的,所以这个插件即使修改了还是一无所用。       经过测试,此插件可以删除了,一点用都没有,反而让后台更加难看。

禁止WordPress自动替换半角标点符号

WordPress虽好,可毛病也不少,今天发现WordPress会将半角标点符号自动转换成全角的,但并没有替换数据库里的信息,真搞不明白开发团队是怎么想的,现将解决方法记录如下。

1、 编辑 wp-includes/formatting.php 文件,找到以下代码:

// static strings
$curl = str_replace($static_characters, $static_replacements, $curl);
// regular expressions
$curl = preg_replace($dynamic_characters, $dynamic_replacements, $curl);

正是 str_replace() 和 preg_replace() 两个函数在作怪。

2、 将相应语句注释,禁用自动替换功能:

// static strings
//$curl = str_replace($static_characters, $static_replacements, $curl);
// regular expressions
//$curl = preg_replace($dynamic_characters, $dynamic_replacements, $curl);

OK,以后Wordpress在也不会自作聪明的将半角标点符号转换成全角标点符号了。

WordPress自带的防垃圾评论功能原来很强

此前提到己连续多日被以SEO为名的垃圾评论反复侵扰,并感叹没有哪款Wordpress插件可以设置自定义关键字进行屏蔽(是希望能够屏蔽到彻底的发送失败),今日无意中在 WordPress 后台发现,其实它自带的防垃圾评论功能原来很强!虽然无法阻止对方发布,但可以通过自定义的关键字,直接把它们判定为SPAM,或放入待审核列队。如下图所示,我目前是这样设置的:

如今,凡是带有 seo (www (www 字符的,将直接前往垃圾评论!
而带有 taobao taoke 淘宝 淘客 …… 的,将放到待审核列队(避免错杀)。
以上这些关键字是根据目前的垃圾评论特征而设,以后酌情增减。

至于另外两个选项,虽然很彻底,反而觉得用途不大,我一直是没有开启的。
An administrator must always approve the comment,那是不太现实的。
Comment author must have a previously approved comment,对新访客不太友好。

自动升级WordPress插件超时Operation timed out after 30

默认情况下WordPress插件自动升级时候的超时是30秒,但是往往服务器网速的原因30秒没无法下载完成新的插件安装包导致提示超时:

正在从 http://downloads.wordpress.org/plugin/super-switch.1.3.zip 下载更新

下载失败。: Operation timed out after 30 seconds with 182448 bytes received

插件升级失败

要解决这个问题可以修改 wp-admin/includes/file.php

把$response = wp_remote_get($url, array(’timeout’ => 30));

30改成300 或 600 后再次自动升级成功了

WordPress模板标签大全–制作修改模板必看

WordPress模板基本文件

  • style.css 样式表文件
  • index.php 主页文件
  • single.php 日志单页文件
  • page.php 页面文件
  • archvie.php 分类和日期存档页文件
  • searchform.php 搜索表单文件
  • search.php 搜索页面文件
  • comments.php 留言区域文件(包括留言列表和留言框)
  • 404.php 404错误页面
  • header.php 网页头部文件
  • sidebar.php 网页侧边栏文件
  • footer.php 网页底部文件

WordPress Header头部 PHP代码

注: 也就是位于<head>和</head>之间的PHP代码

  • <?php bloginfo(’name’); ?> 网站标题
  • <?php wp_title(); ?> 日志或页面标题
  • <?php bloginfo(’stylesheet_url’); ?> WordPress主题样式表文件style.css的相对地址
  • <?php bloginfo(’pingback_url’); ?> WordPress博客的Pingback地址
  • <?php bloginfo(’template_url’); ?> WordPress主题文件的相对地址
  • <?php bloginfo(’version’); ?> 博客的Wordpress版本
  • <?php bloginfo(’atom_url’); ?> WordPress博客的Atom地址
  • <?php bloginfo(’rss2_url’); ?> WordPress博客的RSS2地址
  • <?php bloginfo(’url’); ?> WordPress博客的绝对地址
  • <?php bloginfo(’name’); ?> WordPress博客的名称
  • <?php bloginfo(’html_type’); ?> 网站的HTML版本
  • <?php bloginfo(’charset’); ?> 网站的字符编码格式

WordPress 主体模板 PHP代码

  • <?php the_content(); ?> 日志内容
  • <?php if(have_posts()) : ?> 确认是否有日志
  • <?php while(have_posts()) : the_post(); ?> 如果有,则显示全部日志
  • <?php endwhile; ?> 结束PHP函数”while”
  • <?php endif; ?> 结束PHP函数”if”
  • <?php get_header(); ?> header.php文件的内容
  • <?php get_sidebar(); ?> sidebar.php文件的内容
  • <?php get_footer(); ?> footer.php文件的内容
  • <?php the_time(’m-d-y’) ?> 显示格式为”02-19-08″的日期
  • <?php comments_popup_link(); ?> 显示一篇日志的留言链接
  • <?php the_title(); ?> 显示一篇日志或页面的标题
  • <?php the_permalink() ?> 显示一篇日志或页面的永久链接/URL地址
  • <?php the_category(’, ‘) ?> 显示一篇日志或页面的所属分类
  • <?php the_author(); ?> 显示一篇日志或页面的作者
  • <?php the_ID(); ?> 显示一篇日志或页面的ID
  • <?php edit_post_link(); ?> 显示一篇日志或页面的编辑链接
  • <?php get_links_list(); ?> 显示Blogroll中的链接
  • <?php comments_template(); ?> comments.php文件的内容
  • <?php wp_list_pages(); ?> 显示一份博客的页面列表
  • <?php wp_list_cats(); ?> 显示一份博客的分类列表
  • <?php next_post_link(’ %link ‘) ?> 下一篇日志的URL地址
  • <?php previous_post_link(’%link’) ?> 上一篇日志的URL地址
  • <?php get_calendar(); ?> 调用日历
  • <?php wp_get_archives() ?> 显示一份博客的日期存档列表
  • <?php posts_nav_link(); ?> 显示较新日志链接(上一页)和较旧日志链接(下一页)
  • <?php bloginfo(’description’); ?> 显示博客的描述信息

其它的一些Wordpress模板代码

  • /%postname%/ 显示博客的自定义永久链接
  • <?php the_search_query(); ?> 搜索表单的值
  • <?php _e(’Message’); ?> 打印输出信息
  • <?php wp_register(); ?> 显示注册链接
  • <?php wp_loginout(); ?> 显示登入/登出链接
  • <!–next page–> 在日志或页面中插入分页
  • <!–more–> 截断日志
  • <?php wp_meta(); ?> 显示管理员的相关控制信息
  • <?php timer_stop(1); ?> 显示载入页面的时间
  • <?php echo get_num_queries(); ?> 显示载入页面查询

博客程序转换从z-blog到wordpress

今天趁着放假的时间,闲下来,将原来用了两年的z-blog程序转换成了wordpress,原因也就是wordpress太强大了,经不过住诱惑,z-blog能有功能也很有限。

本来就是一直存在着两个博客,一个运营博客,用wordpress,一个工作博客,用z-blog;目前将这两个博客合二为一,摒弃了原来用了两年的z-blog,使用z-blog的插件move type将日志导出,然后导入wordpress,由于我使用的是windows IIS服务器,静态规则有点麻烦,在麻烦查找了许多方法,终于查到了完美解决方法,将博客的伪静态搞定了。

在今后的日子里,将只使用wordpress博客,而访问不变的地址是:
http://www.wangzhengdong.com/blog/

WordPress永久链接在IIS下的实现

因为IIS不支持.htaccess,所以在IIS下开启WordPress永久链接后需要在格式前加上/index.php/,例如: /index.php/%postname%.html。但/index.php/显得无意义、不美观而且增加了目录层次,所以最好还是把它去掉。以下介绍两种实现方法:

1、安装 IIS 的 ISAPI 组件

这种方法适合能自己管理服务器的同学或者和空间提供商关系好的同学,因为需要服务器的管理权限安装一个免费的ISAPI扩展,详情请参考《WordPress在Win-iis中的完美rewrite实现方法》,该扩展可在这里下载。这个方法是很方便的,安装完扩展即可使用 WordPress 的永久链接,无需额外配置,但需要空间提供商的帮助。如果是免费主机的话,建议使用下面一种方法,自主可控。

2、利用404.php实现

首先需要编写404.php页面,上传404.php文件放到wordpress根目录下,代码如下:

<?php
if (strpos($_SERVER[“SERVER_SOFTWARE”], “Apache”) === 0){ 
// Apache 
// REQUEST_URI形如”/non-exist-page.html” 
$uri = $_SERVER[‘REQUEST_URI’]; 

else{ 
// IIS 
// $_SERVER[‘QUERY_STRING’]形如”404;http://localhost/non-exist-page.html” 
$qstr = $_SERVER[‘QUERY_STRING’]; 
$_SERVER[‘QUERY_STRING’] = “”; 
$pos = strrpos($qstr, ‘://’); 
$pos = strpos($qstr, ‘/’, $pos + 4); 
$uri = substr($qstr, $pos); 

$_SERVER[‘REQUEST_URI’] = $uri; 
$_SERVER[‘PATH_INFO’] = $_SERVER[‘REQUEST_URI’]; 
// 解决重定向的页面中的页面导航问题 
$_SERVER[‘SCRIPT_NAME’] = $_SERVER[‘PATH_INFO’]; 
include(‘index.php’); 
?>

然 后需要设置IIS的404页面到wordpress根目录下的404.php。IIS下的设置步骤为:Internet信息服务窗口->右键网站或 wordpress目录->属性->自定义错误->选中404->编辑属性…->消息类型选择url->输入 /404.php(绝对路径)。

之后再wordpress后台开启永久链接后,便可以看到效果了,本站便是用此方法实现的。

WordPress在Win-iis中的完美rewrite实现方法

要说Wordpress中的完美工作环境,当然要属于Lamp平台,或是稍微逊色一点的Wamp平台;但是由于某此特殊原因,我们没有选择它们,而是选择了Windows+iis+MySql+Php,我把它统称为:Wimp平台。

这次我要说的就是如何在Wimp平台中实现Wordpress的完美URL结构!

例:http://www.wangzhengdong.com/blog/2008/06/wp-iis-isapi/ (本文的URL)

用过Wordpress的应该都知道,实现这样的URL只需要在后台中:Settings->permalinks,然后设置成自己中意的URL就行了。但是前提是您的空间支持 rewrite || 您的虚拟主机支持 .htaccess。Lamp,Wamp中只要开启加载mod_rewrite模块就行了。但是Wimp却不是这么简单的,它如果想实现rewrite功能只能借助于第三方的ISAPI组件。

如现在比较火的:http://www.helicontech.com/isapi_rewrite/ 这是一个国外的组织专门为IIS写的ISAPI Rewrite组件,非常类似于Apache的mod_rewrite。有免费版与收费版!很多网友说实现WP在IIS中的rewrite功能只需要下载一个它的组件就OK了。我在本地测试了好一阵子,没有成功,而且用它的比较麻烦,还要自己写rewrite规则!(没有成功可能是我没写正确规则,汗!)。最后我放弃了它……

下面说一下本博客中用到的ISAPI组件吧:

wp-url-rewriting.dll 下载地址:http://code.google.com/p/wp-url-rewriting-on-iis/downloads/list

这是位好心的牛人专门为工作于iiS中的WP写的ISAPI rewrite组件,用它您根本就不用写rewrite规则,您只需要将其加载到您的ISAPI中,然后进wp后台定义自己的permalinks即可。 假如你用的是虚拟主机的话,您可以联系您的空间商让其为您添加上这个组件。从此您的WP也可以完美rewrite了。

注意:本文还没有完呢!

当我们定义好permalinks后,可能您会发现,我们点击中文标量的文章链接时说找不到网址。

例:http://www.wangzhengdong.com/blog/2008/06/php%e4%b8%ad%e7%9a%84%e6%96%87%e7%ab%a0/

这是因为:WP的编码为utf-8,而这篇文章的URL中Slug(上链接红色部分)编码为gbk。然后WP取得文章Slug后,通过它来查找文章就会找不到!因为编码不同呀。

更改方法:

wp-include/classes.php中(44-50行)

PHP代码

if ( isset($_SERVER[‘PATH_INFO’]) )
$pathinfo = $_SERVER[‘PATH_INFO’];
else
$pathinfo = ”;
$pathinfo_array = explode(“?”, $pathinfo);
$pathinfo = str_replace(“%”, “%25”, $pathinfo_array[0]);
$req_uri = $_SERVER[‘REQUEST_URI’];

替换为下(转换$_SERVER[‘PATH_INFO’]和$_SERVER[‘REQUEST_URI’]的编码):

PHP代码

if ( isset($_SERVER[‘PATH_INFO’]) )
$pathinfo = mb_convert_encoding($_SERVER[‘PATH_INFO’],”utf-8″,”GBK”);
else
$pathinfo = ”;
$pathinfo_array = explode(‘?’, $pathinfo);
$pathinfo = str_replace(“%”, “%25”, $pathinfo_array[0]);
$req_uri = mb_convert_encoding($_SERVER[‘REQUEST_URI’], “utf-8″,”GBK”);

这个操作的意思就是:将Slug的编码由GBK转换为utf-8(您也可以用iconv,或是其它的函数来代替mb_convert_encoding)。

《-结束-》

IIS 下实现 WordPress 伪静态

在 IIS 下使用 WordPress ,最闹心的事莫过于对 WP 固定链接的伪静态设置。网上有很多基于 ISAPI_Rewrite 的 URL 重写规则,大部分都不是太好用,这里推荐两款适用于 IIS 环境下的 WP URL 重写组件,供有独立主机的朋友轻松配置 WordPress 伪静态。

  1. wp_url_rewriting:URL Rewriting for WordPress under IIS
  2. WordPress URL Rewrite

这两款 URL 重写组件使用都非常的简单,只需要解压后,打开 IIS 信息服务管理器,在你的 WordPress 站点属性中添加 ISAPI 筛选器,加载解压的 wp-url-rewriting.dll 或 WordPressURLRewrite32.dll ,然后重启 IIS 即可。然后到 WP 管理后台设置固定链接形式就好。

其中,WordPress URL Rewrite 可以打开 WordPressURLRewrite.ini 设置 WP 博客目录,比如 /blog 等,还可以排除不需要重写的目录。对于某些目录不需要URL重写的就将其排除,不会造成无法访问,比如 /wp-admin 等,Readme.txt里有详细说明。

WordPress URL Rewrite 分 32/64 位, 使用时选择适合自己的版本,还要注意给 dll 所在的目录加上 IIS_WPG 组的权限,如果服务器没有安装 MS VC++ 2008 Redistributable 需要运行文件夹中的 vcredist_x86.exe 来安装,否则在 ISAPI 筛选器中看到的始终是向下的红箭头状态,不可用。

备注:如果箭头红色并且向下,尝试检查组件文件夹的权限,重启一下站点就能箭头变成绿色并且向上。

另:这两款组件都不支持 .html 后缀的 URL 重写,只能以目录形式组成,比如你的固定链接使用的是 /%postname%.html 就需要改成 /%postname%/ ,希望更新版本能解决这个问题。

由于组件是外国人的,所以不支持中文的 tags ,所以,为了兼容中文的 tags ,还需要多加载 ISAPI_Rewrite 组件并配置规则 httpd.ini 来实现:

[ISAPI_Rewrite]

# 3600 = 1 hour

CacheClockRate 3600

RepeatLimit 32

RewriteRule /tag/(.*)/ /index\.php\?tag=$1

这样就能支持任意字符的 tags 了,完美解决 WordPress 的 URL 重写问题。

注意 / 问题,规则正则结尾带 / ,设置固定链接时使用 /%postname%/ ,最后面要加 / 。

除此之外,用过 Discuz! 论坛的朋友都知道 Discuz!提供有 Rewrite 组件,配置方法和效果与 ISAPI_Rewrite 相同。

Windows IIS主机中wordpress永久链接伪静态的方法

前提条件是服务器提供商的控制面板有自定义404错误页面的选项。

你只需创建一个404错误页面,并且写入下列4行代码即可简单优雅的实现无插件完美支持windows iis主机的永久固定链接的伪静态化地址格式。去掉网页地址中的index.php!

<?php
$qs = $_SERVER[‘QUERY_STRING’];
$_SERVER[‘REQUEST_URI’] = substr($qs, strpos($qs, ‘:80’)+3);
$_SERVER[‘PATH_INFO’] = $_SERVER[‘REQUEST_URI’];
include(‘index.php’);
?>
这样即可固定REQUEST_URI和PATH_INFO参量并且包括进去index.php,剩下的将交给wordpress完成任务(说实话,这参数定义代码偶也不清楚,依葫芦画瓢即可)。

具体设置步骤:
1.新建一个记事本,在里面写入上面代码,保存,连同txt格式重新命名为wp-404-handler.php。
2.设置404自定义错误指向wp-404-handler.php,一般来说,绝大多数服务器控制面板均提供该选项。
3.进入wordpress管理后台,设置(Options)-永久链接(Permalinks),你就当自己的主机是linux主机使好了,任意、随便设置自己喜欢的伪静态地址格式及静态地址后缀。
4.Enjoy!
推荐链接地址层次不要太深,并且伪静态化地址加上html/htm,不过也有人推荐不要加上伪静态后缀,因为那样搜索引擎可能会认为那种地址是一个分类目录,而不是一个具体的网页,从而获得更高的搜索排名权重,现在wordpress个人博客也比较流行那种伪静态格式。