WordPress标签分隔符插件

WordPress 2.3加入了标签功能,我们可以在撰写文章的时候,在文章编辑框的下方输入一些以“,”分割的标签。这是一个半角的逗号,对于国内的用户来说,经常需要输入中文的标签,这时候中文输入法打出来的是全角的逗号“,”,就必须切换到半角模式或者关闭输入法,再输入一个半角的逗号,输入完了之后还要把输入法切换回来,十分麻烦。目前没有找到任何一种插件可以解决这个问题。当我研究了WordPress的代码之后,发现光写一个插件是不能达到我要的功能的,必须对现有的代码进行一些修改。这是由于WordPress代码本身有一个小小的不完善的地方。下面我给出我的解决方案,希望对大家有用:

找到WordPress安装目录下wp-includes/post.php,打开编辑,将第432行(WordPress 2.3.1版)由原有的:

$fields = array('post_author', ... ,  'post_category');

改为

$fields = array('post_author',..., 'post_category', 'tags_input');

大家可以看到在这个数组的最后添加了一个’tags_input’, 这样修改的原因是:包含这一行的函数
sanitize_post 要对输入的帖子的数据数组进行过滤和转义,这个数组就是告诉 sanitize_post
帖子数据中有哪些键对应的值需要过滤和转义,正好漏掉了标签对应的键名“tags_input”。另外很有意思的是,我们还能在这一行的上面看到一个 TODO 注释:

// TODO: Use array keys instead of hard coded list

也就是说,WordPress的开发团队注意到了这个问题,将来会直接遍历整个数组(或对象)来进行过滤和转义而非使用这样一个列表。

接下来,将我写的以下代码保存为一个php文件,放到wp-content/plugins目录下:

<?php
/*
Plugin Name: Multiple Tag Separator
Plugin URI: http://shiningray.cn/2007/12/22/multiple_tags_separator/
Description: use other tags separator instead of the default ','.
The plugin requires hacking now,
see http://shiningray.cn/2007/12/22/multiple_tags_separator/.
Version: 0.0.1
Author: ShiningRay
Author URI: http://shiningray.cn/
*/

function multiple_tag_separator($c){
    return str_replace(array(',', ';', ';', '、', ' '), ',', $c);
}

add_filter('pre_post_tags_input', 'multiple_tag_separator');
?>

或者直接下载这个文件:multiple_tag_separator.zip
解压缩后放入/wp-content/plugins目录下。

然后进入你的WordPress的后台,进入“Plugins”管理界面,找到“Multiple Tag Separator”并启用,便可使用这个功能了。

15 Comments

  1. taras
    2008年10月15日 at 2:06 上午 #

    все может быть=))))))


  2. SOBOL
    2008年10月15日 at 5:33 上午 #

    Невероятно красиво!


  3. Svazer
    2008年10月15日 at 4:15 下午 #

    видели видели)


  4. Usmax
    2008年10月15日 at 5:14 下午 #

    Было интересно посмотреть!!!


  5. 鸟类网
    2008年10月15日 at 7:05 下午 #

    这个插件现在不管用了,麻烦作者更新一下,wp2.6的post.php内容有所变化,请作者指导一下该怎么修改?


  6. Agentothege
    2009年04月17日 at 2:55 上午 #

    Спасибо. Прочитал с интересом, и вообще полезный у Вас блог


  7. nataliy
    2009年04月27日 at 12:10 上午 #

    Thank you author


  8. Agentothege
    2009年04月29日 at 2:09 上午 #

    Пост навел на размышления *ушел много думать* :


  9. bloorma
    2009年05月11日 at 2:03 上午 #

    Захватывающий матеиал. Спасибо вам за статью. Удачи и успеха вам


  10. Agentothege
    2009年05月12日 at 1:31 上午 #

    Спасибо. Прочитал с интересом. Блог в избранное занес=)


  11. lORwjjTC
    2009年06月5日 at 11:12 下午 #

    Hi! iigWnW


  12. Olegreze
    2009年09月10日 at 4:53 上午 #

    Основная задача Яндекса — давать ответы на вопросы пользователей!


  13. Седдор
    2009年11月29日 at 10:21 下午 #

    Впечатлило, однако!


  14. Vladislav2
    2010年03月10日 at 12:38 下午 #

    обновление компьютера


  15. 喜典通短信互动
    2010年03月11日 at 1:38 上午 #

    祝您新的一年里:万事如意。身体健康!!


Post a Comment

Your email is never published nor shared. Required fields are marked *

*
*
loading