用 WordPress Shortcode API 实时输出你当前的年龄

包括我在内的很多朋友有这么一个困扰:计算自己年龄不方便,每天要用计算器计算自己今天几岁了,然后到博客的“关于”页面进行更新。今特写一插件,解决我们共同的烦恼。插件启用后,WordPress 会教导 PHP 帮您进行各种复杂生日计算。

<?php
/*
Plugin Name: Wait... How old am I right now?
Plugin URI: http://jiehan.org/tech/output-age-with-wordpress-shortcode-api/
Description: Shortcode that outputs your current age in case you forget.
Version: 250.000 (significant three)
Author: Anonymous
Author URI: http://jiehan.org/
License: GPL2
*/
 
define( 'MY_BIRTHDAY', '1994-12-12' );  // put in your birthday here
                                        // (best in YYYY-MM-DD)
 
function tell_the_world_how_old_i_am( $atts ) {
  date_default_timezone_set( get_option( 'timezone_string' ) );
  $time_i_have_been_existing = date_diff( date_create( MY_BIRTHDAY ), date_create() );
  date_default_timezone_set( 'UTC' );
 
  return $time_i_have_been_existing->format( '%y' );
}
add_shortcode( 'age', 'tell_the_world_how_old_i_am' );
 
?>

然后怎么用?先去 wp-content/plugins/ 下面创建一个文件,把上述内容拷贝进去,然后启用这个插件…

然后呢?然后去改你的页面啦,把 hardcoded(中文不太吉利)的年龄替换成 [age],比如我的:

我是郑界涵。现 Peddie School 十年级学生,今年 [age] 岁了...

将自动被替换为,

我是郑界涵。现 Peddie School 十年级学生,今年 17 岁了...

当然,这个 Shortcode API 在文章页面也适用,你可以随时告诉别人你几岁了。另外,如果不是在文章或页面中,比如在主题的某个地方调用你的年龄,可以写 echo tell_the_world_how_old_i_am( null ); 哦。

注:由于时间原因,当前生日缓存、生日分布式计算、AJAX 或 Comet 真正实时年龄输出将在未来实现。

已知问题

  • 如果你出生地和博客服务器所在地之时区不同,则输出的年龄会有偏差。
  • 如果你博客服务器时间设置不正确,则输出的年龄也会有偏差。
  • 如果你生日写的不对,则输出的年龄也会有偏差。

中文版本 WordPress 功能意见征集

更新:由于收到的反馈极差,因此决定近期不考虑发布此功能。我会将精力重点放在提升翻译质量和将中文补丁的功能拆分成插件上面。

新的设置页面

新增“中国工信部 ICP/IP 备案编号”功能。正在测试当中。此功能将默认关闭。

显示效果:

显示效果

显示效果

有任何意见或问题,欢迎留言提出。请注意,WordPress China 添加此选项的目的是方便中国用户,并不能表明我对我国这个备案制度的立场。这件事情还没有决定,希望大家踊跃提出意见,也许你的意见就是关键性的一票哦。

中国视频嵌入测试

本人预计在 WordPress 3.1 版本中加入用户需求较多的“中国视频网站的嵌入支持”。在 WordPress 3.1 中文版本中,用户将只需在文章中另起一段,写入视频网站的播放网址,即可轻松嵌入视频。

更新:这个功能我已在昨天添加至 3.0.5 版本

如下作为测试和调试之用,不过您愿意欣赏的话也可以哦。呵呵。

下面一段将被替换为视频播放器:

http://v.youku.com/v_show/id_XMjQxMjc1MDIw.html

下面段同时含有 URL 和其它文字,将不会被替换:

文字 + http://www.56.com/u21/v_NTgxMzE4NDI.html

文字 + http://www.56.com/u21/v_NTgxMzE4NDI.html

但是,只插入 URL 是可以的:

http://www.56.com/u21/v_NTgxMzE4NDI.html

我们也将支持土豆网,最后的 trailing slash 是 optional:

http://www.tudou.com/programs/view/o9tsm_CL5As/

最后感谢 Jimmy Xu 同学的帮助。

自定义 WordPress 前台语言标签

很多同学都使用英文版的 WordPress,那么,这就造成了前台的 html 标签的 lang 属性错误,可能会影响搜索引擎或广告平台机器人对您网页的抓取。

<html dir="ltr" lang="en-US">

这是若您使用英文 WordPress 得到的默认效果。

我刚刚写完一个 Frontend Language Customizer for WordPress 插件,希望可以帮到您。又是一个代码比说明还短的插件,不过它很有用。要知道,乱改主题代码是不好的哦。请在 WordPress 目录新建目录和文件 /wp-content/plugins/frontend-language-customizer/frontend-language-customizer.php,代码如下:

(代码已更新,可通过 W3C Validator 的测试)

<?php
/*
Plugin Name: Frontend Language Customizer
Plugin URI: http://jiehan.org/tech/customize-your-wordpress-frontend-language-tag/
Description: Enables you to set your site language tags which shows up in frontend.
Author: Jiehan Zheng
Version: 0.1
Author URI: http://jiehan.org/
*/
 
define("YOUR_DESIRED_DIR", "ltr");      // 您想要的书写方向
define("YOUR_DESIRED_LANG", "zh-CN");   // 您想要的语言定义
 
function flc_replace_tag($original_output) {
        return preg_replace('/lang=".*?"/', 'lang="' . YOUR_DESIRED_LANG . '"',
                preg_replace('/dir=".*?"/', 'dir="' . YOUR_DESIRED_DIR . '"', $original_output)
        );
}
 
add_filter('language_attributes', 'flc_replace_tag');
?>

我就不发到 WordPress.org 插件目录了,因为这个插件几年内应该不会有不会再有更新。有问题请随时留言反馈。