WordPress在不使用任何的插件的情况下是能在首页实现摘要显示的,但她实现起来不是那么方便,或要自己做文章的中间加;或要修改主题中的标签。总之是不太方便吧。要怎样才能让WordPress自动实现在首页等位置(除了单篇文章的其他页面)只显示指定字节数的摘要,而不用操作其他不关文章的事呢?下面的代码可以帮你实现。
/**
* author 冰古
* link http://wanwp.com
*/
$size = 500; // 500是显示的字节数,可按照自己的要求修改
$more_link_text = 'more...'; // 显示在摘要后面的提示
add_action('the_content', 'control_content_size');
function control_content_size($content) {
global $size, $more_link_text;
if (is_singular()) return $content;
$content = strip_tags($content);
$content = cut_str($content, $size);
$content = '' . $content . '
";
return $content;
}
/**
* cut_str用于截断包含中文(或其他多字节?)的utf8编码的字符串
* @param string $str utf8编码的字符串
* @param int $len 需要截取的长度(单位是字节)
*/
function cut_str($str, $len) {
if (!isset($str[$len])) {
// 判断字符串长度是否已经达到需要截取的长度
// 未达到时,直接输出原字符串
} else {
if (seems_utf8($str[$len-1])) // 判断截断字符串的最后一个字符是否是utf8编码的
$str = substr($str, 0, $len); // 如果是utf8编码的,直接截断输出
else { // 如果不是utf8编码的,因为utf8编码的中文是三个字节进行保存的,则判断该字符和周围字符组成的字符串是否符合utf8编码
if(seems_utf8($str[$len-3].$str[$len-2].$str[$len-1]))
$str = substr($str, 0, $len-3) . $str[$len-3] . $str[$len-2] . $str[$len-1];
elseif(seems_utf8($str[$len-2].$str[$len-1].$str[$len]))
$str = substr($str, 0, $len-2) . $str[$len-2].$str[$len-1].$str[$len];
elseif(seems_utf8($str[$len-1].$str[$len].$str[$len+1]))
$str = substr($str, 0, $len-1) . $str[$len-1].$str[$len].$str[$len+1];
else // 这个else应该不用也是可以的
$str = substr($str, 0, $len);
}
}
return $str;
}
代码的作用:
使用方法:
或者automatic-excerpt插件到./wp-content/plugins文件夹中,然后在后台激活,当然不要忘了修改代码中的$size和$more_link_text啦。
提示:
有要求,留言提。
留言讨论:3早两天开始,冰古(Follow bingu 即可添加冰古了)又开始折腾twitter这个microblog始祖。虽然我们跟她只能隔墙交流,但大家都是热情不减。dabr、tweetr等工具的应用也使墙体漏洞百出。
按照WordPress和twitter的热门程度,发布新文章后,发送一条包含新文章标题、链接等信息的消息到twitter这样的一个插件是不会少的。但一来我懒得去找,二来我仅仅需要的也只是这样一个简单的功能。所以还是决定自己弄一个。
update_tweet的特点
update_tweet的安装
$twitupdate_args = array( 'twitter_username' => '', // twitter用户名 'twitter_password' => '', // twitter密码 'twitter_api' => 'http://twitter.com', // twitter api 链接,默认是“http://twitter.com”,后面不要添加“/” 'shorten_login' => '', // 可选填,缩短链接参数,用户名。bit.ly和j.mp可用 'shorten_key' => '', // 可选填,缩短链接参数,key 'shorten_api' => 'http://api.j.mp/shorten?version=2.0.1&longUrl=%s&login=%s&apiKey=%s', // 缩短链接参数,api链接 'before' => '', // 前缀,添加到整个tweet的前面 'after' => '', // 后缀,添加到整个tweet的后面 );
两天前折腾出一个用JavaScript实时显示Gravatar头像的效果。也就是说留言时,你输入email后,就会实时显示你的Gravatar头像。你要说这个效果有什么用,我的答案是“没什么用,只是用来耍耍裤酷而已
”。
把这个效果加入Wordpress也不费什么事,仅仅需要四步走:
加入下面的代码:
PS:上面代码中的48可以修改为你想要的Gravatar头像的大小尺寸。
在这段代码的下面,加入:
PS:上面代码中的48,同样改成你想要的Gravatar头像的大小尺寸。
测试效果,在这里留言试试。
留言讨论:23Ajax Plugin Helper是一款使后台插件页面中的激活、禁用、升级或删除等工作免刷新化的插件。也就是说我们在对多个插件进行操作时可免除页面的刷新,节省鼠标点击的次数。
有图有真相,没装这个插件前,我们升级一个插件需要页面刷新两次,鼠标点击两次

装上后,页面0刷新,鼠标点击一次搞定

这个插件要求WordPress版本至少要达到2.8。它是由Matt制作的,并且是2009年度WordPress插件大赛的参赛作品
留言讨论:0Tabs滑动效果是冰古比较喜欢用在WordPress插件设置页上的一个流行元素。因为它可以有效地压缩页面的长度,避免用户拉动才能看到内容;还有就是这个效果很coooool,你不觉得吗?
jQuery可以很方便地制作出流行的Tabs滑动效果,于是我们也就可以利用WordPress内置的jQuery快捷地在你的插件或主题中加入Tabs滑动效果。以下就看看如何在插件的设置页中加入该效果吧。
首先是准备设置页的HTML
function test_setting_page() {
echo <<
这里就是设置内容
这里是卸载内容
这里用一个id为wrapper的div包裹设置页中要用到的HTML代码。跟着是ul列表,列表中的li就是Tabs滑动效果中的Tab。li中的#setting和#uninstall对应下面id为setting和uninstall的div,也就是说点击#uninstall对应的Tab就出现id为uninstall的div里的内容。需要更多的tab,按照这样的格式添加就可以了。
现在的效果:

接下来,我们为它添加必须的jQuery
wp_enqueue_script('jquery');
wp_enqueue_script('jquery-ui-core');
wp_enqueue_script('jquery-ui-tabs');
add_action('admin_footer', 'test_setting_js');
function test_setting_js() {
echo <<
jQuery(document).ready(function(){
jQuery("#wrapper").tabs();
});
JS;
}
三个wp_enqueue_script载入Tabs效果中要用到的jQuery库,跟着在后台的底部加上一小段jQuery调用代码(注:这里不能使用$,而用jQuery代替),其中的#wrapper就是上面HTML中的div。
现在的效果:

最后用CSS美化一下Tabs
add_action('admin_head', 'test_setting_css');
function test_setting_css() {
echo '';
}
CSS都应该添加到head标签里,所以是将CSS添加到后台头部的。虽然WordPress内置了jQuery库,但却没有内置美化用的CSS,所以要自己添加CSS,当然jquery官方提供了很多美化CSS,你选择一个就可以了,不过最好还是将该CSS保存为本地文件,而不是像这里用外链调用。
最后效果:

上面例子的完整代码
留言讨论:7
WordPress Console,一个WordPress开发者必备的WordPress插件。
WordPress控制台,从字面和界面上就可以看出这个插件的用途,她如同Windows的命令提示符和*NIX的控制台那样,输入命令就能返回数据。
WordPress控制台中可以输入PHP或WordPress(包括激活的插件)中可用的函数,运算符等,它运用了AJAX技术,使得能像真实的控制台般立即返回数据。
还是不清楚?看作者的视频教程。
WordPress Console Introduction from Jerod Santo on Vimeo.
安全提示:为了你的服务器的安全,请不要在公开环境中使用此插件,仅开发阶段使用。
留言讨论:0
WordPress 2.7开始,Dashboard变得动人,这个地方也是每次登陆后台后第一眼看到的页面,如果能在这个页面提供一些有用的信息,这些信息将能发挥更大的作用。
在Dashboard中添加这样的一个挂件很简单,仅仅需两个函数就能搞定:
function dashboard_widget_output() {
// 这里打印出你要输出的信息
}
function dashboard_widget_setup() {
wp_add_dashboard_widget( 'dashboard_widgt_id', '挂件标题', 'dashboard_widget_output' );
}
add_action('wp_dashboard_setup', 'dashboard_widget_setup');
上面的代码中,第一个函数,dashboard_widget_output()的作用是打印你要在dashboard中显示的信息,例如要显示当前服务器的PHP信息:
function dashboard_widget_output() {
echo '';
phpinfo();
echo '
';
}
第二个函数,dashboard_widget_setup()的作用就是对这个挂件进行必要的设置:
wp_add_dashboard_widget( '这里填写挂件的id,命名同php函数命名吧', '挂件显示的标题', '打印函数,如dashboard_widget_output' );
最后用add_action添加一个行为:
add_action('wp_dashboard_setup', '设置函数,也就是第二个函数dashboard_widget_setup');
就是这么简单的两步就可以在Dashboard上添加一个自定义的挂件了。
最后给出题图所示挂件——This Year——的代码。
参考文章:Creating Dashboard Widgets in Two Easy Steps
二零零八总结与二零零九展望
Some Chinese Please!是冰古在2007年制作的一款防御Spam留言(包括trackback和pingback)的WordPress插件。新版本发布,就转移到“玩WordPress”这里来了。
工作原理
一般blog(特别是由WordPress等外国平台构建的blog)收到的Spam基本都是纯英文或其他外文语言构成的,而我们通常的文章都是用中文写作的,纯英文留言出现的机率是极低的。这时,限制留言内容必须带有中文字就是限制Spam留言的一个好办法。
Some Chinese Please!的作用就是在留言被保存到数据库之前,检查留言内容是否含有中文字。如果含有中文字,则顺利保存到数据库中;如果不含有中文字,则不保存到数据库中,并返回留言失败的原因。
优点与缺点
优点:
缺点:
安装步骤
更新日志
版本 1.0.1
2009/06/24 托管于WordPress Plugins Extend
提示
在提示内容中,你可以添加部分HTML代码(例如strong,em,a,blockquote等)和内置的表情(例如::!:)。
留言讨论:21这个应该不是什么新信息,但我却是现在才搞清楚。
在我制作的多个插件中都是用到了jquery这个便利的javascript库,但让我很郁闷的是,虽然已经调用了jquery,在html代码上也有jquery的链接,但插件中应有的效果却始终不能显示出来。但是改为调用Google AJAX Libraries API或jquery上的jquery.js都能出来效果。所以插件中我只好用Google AJAX Libraries API来代替了。
这实在不是什么好主意,但当时也是没办法,因为我不知道解决办法。
今天又是在wordpress调用jquery,情况还是如此。无意中打开wordpress中jquery.js,然后对比code.jquery.com中的代码,发现wordpress中的jquery.js最后面是多了一行代码的:
jQuery.noConflict();
看来是这行代码的问题了,查阅jquery上的文档才知道,上面那行代码的意义是:释放jquery中的$变量。从而避免多个javascript库之间的冲突问题。当jquery中要使用到$变量时,可用jQuery来代替。例如:
$(document).ready(function(){
$("p").after("Hello");
});
用下面的代码代替:
jQuery(document).ready(function(){
jQuery("p").after("Hello");
});
OK,现在使用wordpress内核中的jquery库也能出来效果了。
留言讨论:4从WordPress的版本升级到2.0开始,WordPress开始向”肥大“发展,这就导致了新版本的WordPress中必有你不太喜欢的功能。
例如2.6开始加入的post revision特性,2.8开始加入的后台编辑器的代码高亮特性等。
如果不喜欢,我就会考虑关闭这些功能。但WordPress很多特性都不能在后台控制,唯一的方法就是写一小段代码去关闭它们。
这里将列举出如何关闭上面提到的两个不太必要的特性。
1、关闭post revision特性
/**
* Set define WP_POST_REVISIONS to zero
*/
define ('WP_POST_REVISIONS', 0);
/**
* Remove revisions actions in post.php
*/
remove_action('pre_post_update', 'wp_save_post_revision');
这个hack是在保留自动保存文章功能的前提下进行关闭post revision,所以关闭的效果不太完美,有时还是会有revision的出现,但聊胜于无,在不想关闭自动保存文章这个完美的功能的前提下,这已经是最好的解决方法了。
2、关闭后台插件和主题在线编辑器的代码高亮特性
/**
* Disable code highlight in theme and plugin editor
*/
wp_deregister_script('codepress');
这个hack可以完美地将编辑器中的代码高亮特性完全关闭。
这些hack小,但作用却是不小,将它们打包成一个插件,就可以成功摆脱这些多余的功能了。
安装:
打开somehacks.php,保存为somehacks.php,上传到wp-content/plguins/文件夹中,最后在后台激活Some Hacks即可。