WordPress 2.1的一个小cookie兼容问题

我还没有升级到WordPress 2.1,不过我在一个子目录下装了一个WordPress 2.1。这几天只用过几次,发现主Blog这边的WordPress 2.0.7的编辑页面里,右边的那些小框框都不能拖动了,标题栏右边用来展开框框的加减号也不见了。看了下Firefox的JavaScript控制台,发现报了一个错误,好像是cookie有问题。

小小的研究了一下。WordPress会自动记住这些框框的顺序,以及打开或关闭。这些自然不会记录在服务器上,而是用cookie记录的。找到控制这些框框的js文件:/wp-includes/js/dbx.js,发现里面在设置cookie的时候,path被设置为"/"。WordPress的其他cookie,比如记录用户登陆状态的cookie,都是有记录path的,所以多个目录下的不同WordPress互相之间不影响。而这个dbx.js只是个js文件,无法象PHP文件那样使用SITECOOKIEPATH常量获得当前WordPress在域名下的哪一个PATH,所以直接用"/"也是无奈。问题是,如果多个WordPress都是同一个版本的话,那么就等于是共用该设置,大不了一个WP里调整过顺序,其他的WP也跟着调整了而已。而WordPress 2.0.7和WordPress 2.1里,这段cookie保存的格式是不一样的。WordPress 2.0.7里是:

grabit=2+,3+,4+,5+,0-,1-,6-&advancedstuff=0-,1+,2-

而WordPress 2.1里则是

grabit:3+|0+|5+|4+|1-|2-&advancedstuff:0-|1+|2-

结果我的WordPress 2.0.7读取了cookie,在解析时发现格式不对后,就直接出错了。

没办法,改了一下WordPress 2.1里的dbx.js文件,把path改成目录名。然后把原来的cookie删了,两边都重新调整了一下,这下不冲突了。WordPress 2.0.7里带的是DBX 2.02,而WordPress 2.1里带的是DBX 2.05。找来DBX 2.05的源代码看了一下。从WordPress 2.0.7升级到WordPress 2.1应该没问题的,不会出现错误,因为DBX 2.05里写了this.cookie[i] = this.cookie[i].replace(/\|/g, ',');this.cookie[i]= this.cookie[i].replace(/:/g, '=');这样的代码,哈哈。

Update:这几天用的还行,只是偶尔(大概两天一次)会出现问题。想了半天,好像"/"的cookie可以同时影响"/"和"/nc/"是不是啊。火大,直接把WordPress 2.1的dbx.js上传替换了WordPress 2.0.7的文件,好像也没有不兼容。看了一下,把2.1和2.0.7的编辑文章页面侧边栏框框的顺序调成一样,两者的cookie里的顺序有一点不一样。所以,二者不能共用cookie。唉,还是尽快升级的好。

本文共有 10 条评论WordPress 2.1的一个小cookie兼容问题


  1. 1 谈典论当

    看的出,yskin是个很用心的人。我才接触WP不久,把你这当“图书馆”了:)

  2. 2 2699

    你的wp-CJK-excerpt也该更新了吧。
    2.1会自动在阅读全文加个标签

  3. 3 你好,上帝

    老大...
    我等你的Yskin's Latest Comments
    等到奶都干了 :-(

  4. 4 kevin

    为虾米我每次安装都没有任何问题捏
    郁闷!

  5. 5 Wady

    楼上的,yskin 所说的是 cookie 冲突问题(WP 居然不能自定义 cookie 域名??)。只装一个 WP 程序是无问题的。

  6. 6 pute

    我倒…………没有问题还不好么?

  7. 7 Wady

    6楼没看清哦……我是说只装一个自然是无问题。但如果同一空间有两个以上的WP的话,因为 cookie 域不能自定,会有 cookie 冲突的错误。以前用 ASP 的博客的时候就是这样,当一个空间里有两个相同博客的时候,因为 cookie 域相同,使得无论打开哪个一个博客内容都是相同的……虽然其中一个博客的数据库里的内容并不相同。只需要将其中一个博客的 cookie 域更名就可以了。

  8. 8 cooolo

    请yskin到我的blog看一下,我的blog需要这个插件吗?谢谢!
    我用点点游的2.1版,主题是德国Patrick Queisler的 SoSuechtig Black Edition 2.9 beta4

  9. 9 yskin

    。。。哪个插件?我这篇文章里好像没讲到什么插件啊。而且这篇文章里提到的问题针对于同一个网站架设有不同WordPress系统的情况,并不是普适的。

  1. 1 BloggingPro China » WordPress 2.1的一个小cookie兼容问题
    Pingback2007-1-23 9:56 下午

请留下您的评论: