
WordPress 的用户注册机制是,填写用户名、邮箱,由 WordPress 生成随机密码,并发送到用户注册时填写的邮箱地址。但很多人的服务器并没有配置邮件服务或者邮件发送会长时间延迟(比如我正在使用的GoDaddy主机),或者由于邮件运行商的反垃圾邮件功能等原因,导致注册之后收不到WordPress发送的密码邮件,无法完成注册。
既然如此,不如我们 hacks 一下 WordPress。让 WordPress 注册后直接显示密码。
怎么改呢?很简单,只需改动 WordPress 根目录下的 wp-login.php 即可。
1、搜索下面这句,位于 register_new_user 函数中。用于注册成功后发送通知。找到后把它注释掉(当然如果你希望保留邮件发送功能则无须注释掉)。
wp_new_user_notification($user_id, $user_pass);
2、并在上面这句的下一行加上两句:
setcookie("u", $user_login);
setcookie("user_pass", $user_pass);这两行的目的是把注册时填写的用户名,以及 WordPress 随机生成的密码写入cookies,以便在后面调用。
3、搜索下面这句
$errors->add('registered', __('Registration complete. Please check your e-mail.'), 'message');并把它替换为
$errors->add('registered', __('Registration complete!<br />Username: '.$_COOKIE['u'].'<br />Password: '.$_COOKIE['user_pass'].'<br />(You can modify your password after you login)'), 'message');中文版:
$errors->add('registered', __(' ^__^ 注册成功!<br />用户名:'.$_COOKIE['u'].'<br />密码:'.$_COOKIE['user_pass'].'<br />(登录后可以修改为便于记忆的密码)'), 'message');注:文件包含有中文,需要另存为utf8的格式。
到此,就修改完成了。保存,上传。
注:本文基于 WordPress 2.6.1,在3.0.4版本上测试可用。

WordPress 的短代码功能在 WP 2.5 以后就存在了,只是因为需要预先自定义代码功能,所以很多朋友并没有很关注它,根据自己的网站类型和功能,如果有时候需要频繁使用某一代码功能框架,还是推荐大家使用短代码功能,能够大大节省你的代码输入和维护时间。
比如:使用短代码在WP博客任意位置添加广告
WordPress Codex: http://codex.wordpress.org/Shortcode_API
添加使用短代码功能的代码很简单:
function NAME($atts, $content=null){
return 'CODE';
}
add_shortcode('SHORTCODE','NAME');解释:
NAME - 设定代码名字
CODE - 代码主体框架
SHORTCODE - 要使用的短代码
延伸阅读:http://www.wheatnotes.com/2010/11/wordpress-shortcode-api/

HTTP 请求是很费时间的,主要花费在建立连接的过程中。其实真正传输 1K 和 10K 数据的时间相差无几,但哪怕你请求的是一个仅有几字节的小文件,一样需要花费一定的连接时间。
这个时候 CSS Sprites (tools via1 via2) 和 Inline Images with Data URLs 就可以帮上大忙了。
CSS Sprites 的思想是把很多张小图片(如:图标)整合为一张大图,再利用 CSS 的 background-position 属性在正确的地方显示正确的图标。这样的好处就是把原来的 n 个 HTTP 请求减少至 1。
Inline Images with Data URLs 的思想是干脆直接把装饰性的小图片写在 CSS 或 HTML 中,不需要 HTTP 请求。当然不能直接在文本中写二进制的 0101,但经过 base64 编码后就可以了。基本的用法是:
data:[<mediatype>][;base64],<data>
例:
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAGvSURBVDjLpZO7alZREEbXiSdqJJDKYJNCkPBXYq12prHwBezSCpaidnY+graCYO0DpLRTQcR3EFLl8p+9525xgkRIJJApB2bN+gZmqCouU+NZzVef9isyUYeIRD0RTz482xouBBBNHi5u4JlkgUfx+evhxQ2aJRrJ/oFjUWysXeG45cUBy+aoJ90Sj0LGFY6anw2o1y/mK2ZS5pQ50+2XiBbdCvPk+mpw2OM/Bo92IJMhgiGCox+JeNEksIC11eLwvAhlzuAO37+BG9y9x3FTuiWTzhH61QFvdg5AdAZIB3Mw50AKsaRJYlGsX0tymTzf2y1TR9WwbogYY3ZhxR26gBmocrxMuhZNE435FtmSx1tP8QgiHEvj45d3jNlONouAKrjjzWaDv4CkmmNu/Pz9CzVh++Yd2rIz5tTnwdZmAzNymXT9F5AtMFeaTogJYkJfdsaaGpyO4E62pJ0yUCtKQFxo0hAT1JU2CWNOJ5vvP4AIcKeao17c2ljFE8SKEkVdWWxu42GYK9KE4c3O20pzSpyyoCx4v/6ECkCTCqccKorNxR5uSXgQnmQkw2Xf+Q+0iqQ9Ap64TwAAAABJRU5ErkJggg==" />
可以借助 Motobit Software 在线生成 base64 的图片内容。
Inline Images with Data URLs 的局限:
1. IE 5-7 不支持,IE 8 支持。为了兼容 IE,可以把这些部分单独写入 IE 专用的 CSS 文件中。
2. 文本形式的图片占用比二进制更多的字节。Base64 格式比二进制大 39%~45%,在 gzip 压缩后,这个比例减小至 8%~9%。最好在 base64 编码之前优化图片本身。
3. 浏览器对 inline 图片有大小限制。Opera 最大支持 4,100 字节,Firefox 最大支持 100K。所以最好只应用在小图片上。
补充一点:CSS Sprites 和 Inline Images with Data URLs 是可以同时使用的。

答小小童鞋的问题,在调用WP热评文章的时候如果没有相关文章,则显示“当前无热评文章”。
以前的代码是直接调用其SQL语句,今天新分享一段PHP代码,更为简洁,效率更高。只需要在合适的地方插入如下代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
| <?php $result = $wpdb->get_results("SELECT comment_count,ID,post_title FROM $wpdb->posts ORDER BY comment_count DESC LIMIT 0 , 10");
foreach ($result as $post) {
setup_postdata($post);
$postid = $post->ID;
$title = $post->post_title;
$commentcount = $post->comment_count;
if ($commentcount = 0) { ?>
<li>当前无热评文章</li>
<?php } } ?>
if ($commentcount != 0) { ?>
<li><a href="<?php echo get_permalink($postid); ?>" title="<?php echo $title ?>">
<?php echo $title ?></a> (<?php echo $commentcount ?>)</li>
<?php } } ?> |

继 GTmetrix - 加速你的网站!文中提到的 YSlow 和 Page Speed 在线测试工具,其中涉及到 Expires Headers 和 ETags 优化选项,说一下WP用户的解决方案。
什么是Expires Headers?
Expires Header,就是过期时间的header报文。这个文件过期时间,其实就是通过header报文来指定特定类型的文件在浏览器中的缓存时间。有些文件(例如样式表中调用的背景图片和文章中调用的图片)其实在很长一段时间内我们都不会对它们有什么改变,这类文件可以设置非常长的缓存时间,这样浏览器以后就不需要再从服务器下载这些文件而直接从缓存中读取,从而大大加速网站的载入速度。
如何添加Expires Headers?
①如果你的服务器是Apache,你可以用 ExpiresDefault 这样的语句。直接添加在 .htaccess 文件即可。比如
ExpiresDefault "access plus 2 months"
这个语句使用了相对时间,即从现在起到两个月后过期。当然years、months、weeks、days、hours、minutes、seconds都可以使用。
你可以写入.htaccess文件中这样的语句:
#Expire Header
ExpiresDefault "access plus 2 hours"
或者
# Expire images header
ExpiresActive On
ExpiresDefault A0
ExpiresByType image/gif A2592000
ExpiresByType image/png A2592000
ExpiresByType image/jpg A2592000
ExpiresByType image/jpeg A2592000
ExpiresByType image/ico A2592000
ExpiresByType text/css A2592000
ExpiresByType text/javascript A2592000
√ A2592000 为 1 个月 (60*60*24*30=2592000)
注意:首次登录并不能看出来有什么提升,但是当浏览子页面或者再次浏览的时候,就会发现速度较之前有很大改观,服务器不会重新抓图片、CSS、JS这样不常常更新的文件(也就是减少了HTTP请求次数)。
以上方法 via Tips And Tricks HQ
②使用插件 HTTP Express
Enable a php based HTTP proxy to add correct HTTP headers to images, css and javascripts. Useful if you want to improve cache usage and reduce bandwidth impact. Requires Apache with mod_rewrite enabled to work.
移除ETags
在 .htaccess 文件中加入
加速网站,同时别忘了 两个可以让你的WP更快的插件……
WP加速优化博文预告:我是怎么处理嵌在HTML中的小图片的……

GTmetrix 是一个集成了 Google Page Speed 和 Yahoo! YSlow 且给出各项得分,并能够根据结果为您提供可行化的优化建议的网站。
地址 http://gtmetrix.com/
无须注册,支持多网站检测对比,网站加载元素响应时间等。注册用户可以得到报告保存、历史数据对比、图标显示等专业服务。
网站的 Recommendations 页面给出了各项优化建议,应该算是比较全面的了(英文)。地址 http://gtmetrix.com/recommendations.html
可以将网站添加为书签工具方便以后随时使用。添加方法 http://gtmetrix.com/faq.html#faq-bookmarklet
博文预告:针对 WordPress 用户的部分优化方案……

最近很看好彩色标签,在几个网站上都已经启用了。博客因为主题风格原因就没有使用,界面效果请见 Wheat Notes
建议大家也不要盲从花哨的元素,根据自己的整站内容和主题风格,添加合适得体的功能和效果。界面很重要,但我还是觉得是“内容为王”的。具体操作步骤如下:
1. 在主题 functions.php 中添加:
//Start of colorful tag cloud
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);
//End of colorful tag cloud其中,颜色是随机的,可以自行修改
$color = dechex(rand(0,16777215));
这行来修改范围。
2. 主题相应位置添加:
<?php wp_tag_cloud( 'smallest=8&largest=24&number=50' ); ?>
8 是最小的 tag 的字体大小(用的最少的 tag),24 是最大的(用的最多的 tag),50 是 tag 的数目,可以自行修改。
类似这样集成在侧栏里的一些 widgets ,对于追求网站速度使用缓存技术的朋友,可以将整栏使用 php 的 Output Control Functions 缓存;或者借助 widgets cache 和 php widgets 插件进行缓存,以此来加快网站页面打开速度。如果是侧栏较多的网站,这个方法会大大减少你的数据库查询次数!

手动修改下主题的functions.php文件,就可以实现在发布日志和页面时通过[advertise]短代码添加预置好的广告,对于DIYer者们来说,相信这个方法比插件更合他们的口味。
代码很简单,把以下的代码加入到主题的functions.php中:
function showad() {
return '<div class="advertise">
//这里放你的Adsense广告代码
</div>';
}
add_shortcode('advertise', 'showad');然后在你想要植入Adsense广告的地方添加[advertise]即可。
通过以上简短的代码可以看出,add_shortcode();中第二个参数为需要添加的函数,第一个参数为使用短代码功能是方括号中应当包含的部分,而return ' 语句的两个单引号之间可以放任何你想要放的代码,也就是说短代码不光能够控制广告的位置,也可以实现很多其他的功能,比如Wordpress Popular Posts插件和Clean Archives Reloaded插件中都应用到了这个功能。

目前WordPress 3.0 RC已发布,新版增加了许多功能,可能喜欢尝鲜的朋友已迫不及待地升级了自己博客,其中在主题选项中多出一个Menus功能,一个可以方便灵活地向导航菜单添加自定义内容的新功能。但当你打开这个选项时会提示 "The current theme does not natively support menus, but you can use the "Custom Menu" widget to add any menus you create here to the theme's sidebar." 主要意思就是当前的主题不支持菜单功能,不过我们依然可以添加自定义菜单到主题侧边栏中,也就是小工具。然而当你启用3.0版默认主题Twenty Ten后,这个提示就消失了,看来是新的默认主题针对3.0功能进行了优化。
原来在默认主题functions.php中有一句:
// This theme uses wp_nav_menu() in one location.
register_nav_menus(
array(
'primary' => __( 'Primary Navigation', 'twentyten' ),
) );
把这句代码添加到当前主题functions.php模板文件中,提示也消失了,关键就是这句了。
也可以用:
// This theme uses wp_nav_menu()
if ( function_exists( 'register_nav_menus' ) )
{
register_nav_menus(
array(
'foot_menu' => 'My Custom Footer Menu',
'sidebar_menu' => 'Super Sidebar Menu'
) );
}或者更简单的代码(Wheat Notes正在使用):
// This theme uses wp_nav_menu()
add_theme_support( 'nav-menus' );
详细函数语法参照:http://codex.wordpress.org/Function_Reference/register_nav_menus
但只修改这里,并不会真正在主题导航菜单上启用这个功能,只会在侧边小工具中多出custom menu小工具一项,还需修改导航部分代码,才会体验到新的功能。
一般主题导航部分代码为:
<?php wp_list_pages('title_li='); ?>或者类似:
<?php wp_list_categories('sorderby=name&depth=4&title_li='); ?>需将其修改为 wp_nav_menu() 函数直接输出导航菜单:
<?php wp_nav_menu($args); ?>
该函数可传递一个数组进去,指定该菜单的各项参数,比如调用哪个菜单、如何排序、给菜单指定一个div层等等。具体的各参数取值请见官方说明文档。
当你使用
时,将调用第一个导航菜单。如果你想调用其它菜单,可以通过菜单的 id, slug, menu 名称来指定:
例如:
<?php wp_nav_menu(array('id'=>5)); ?>
or
<?php wp_nav_menu(array('menu'=>'Test Menu')); ?>
or
<?php wp_nav_menu(array('slug'=>'testmenu')); ?>介绍个WOPUS推荐的:
<?php wp_nav_menu( 'id=navbar' ); ?>
也可以根据自己使用的主题功能修改为类似(Wheat Notes正在使用):
<?php wp_nav_menu( 'id=navbar&menu_class=headermenu' ); ?>
详细函数语法参照:http://codex.wordpress.org/Function_Reference/wp_nav_menu
主题改造完成,下面简单介绍一下这个Menus功能的使用方法:
打开Menus设置页面,在+区域输入menu name后点击creat menu添加一个新的自定义菜单。
在左侧选择准备显示在导航菜单的分类标题或页面,也可以添加一个链接,然后点击“add to menu”添加到新的自定义菜单中,保存菜单。
官方操作说明:http://codex.wordpress.org/Appearance_Menus_SubPanel
刷新博客页面,看看新的导航菜单是不是出来了。
总结:个人感觉这是3.0版一个非常不错的新功能,可以灵活方便地变更主题导航菜单内容,不受主题本身限制,但之前所有主题都不支持这个功能,需手动修改模板文件,建议新手更改前备份主题。