May 15, 2007
Ultimate Tag Warrior 是一款wordpress的插件, 用来增强wordpress的功能, 为其提供tags, 现在被绝大部分的wordpress构建者所采用, 成为wordpress必备之插件。 我也一直使用该插件管理和使用tags, 功能非常强大。
昨天在网上看到说旧版的 Ultimate Tag Warrior 跟wordpress2.1有兼容性问题 — “ WP 2.1 和 UTW 的兼容性问题 ”, 虽然我一直在用 Ultimate Tag Warrior 没有碰到过, 不过想想反正升级没有坏处就升吧, 可恰恰就是升级, 带来了新的问题。
昨天升级的时候也没有对 Ultimate Tag Warrior 3.14159265 版本进行测试, 直接替换, 仔细浏览了一下网页也没有什么问题出现, 所以以为没有什么问题。 今天用Windows Live Writer 离线编辑博客并发表, 就是这篇“ wordpress用标题拼音为缩略名 ”, 结果发完后发现tags(关键词)都没有出现, 很奇怪的问题, 我一直以来都采用 Ultimate Tag Warrior 提供的采用在文章中插入[ tags ][ /tags ]的功能发文, Ultimate Tag Warrior 都能转换成他的tags, 以前一直没有出现过这个毛病, 而且这个功能也一直非常好用。
然后我就把 Ultimate Tag Warrior 3.14159265 重新下载一个到本地, 然后在本机上进行测试, 结果发现直接用wordpress编辑器编写文章, 在文章中插入[ tags ][ /tags ]在文章发布后可以出现关键词(tags), 但用离线编辑器就不行, 起先以为 Windows Live Writer 有问题, 换用 Zoundry Blog Writer 来测试, 发现也是同样的问题, 由此觉得可能是最新版的 Ultimate Tag Warrior 3.14159265 修改了什么地方,导致了这个问题。
用 Beyond Compare 对比发现了问题, 这个采用[ tags ][ /tags ]的发文功能是在ultimate-tag-warrior-actions.php 里面, Ultimate Tag Warrior3.14159265 可能为了防止什么问题, 在 ultimate_save_tags() 函数中增加了下面这些语句。
// Fix from Mark Jaquith using nonces
if ( !current_user_can(’edit_post’, $postID) )
return $post_id;
// origination and intention
if ( !wp_verify_nonce($_POST['utw-verify-key'], ‘utw’) )
return $postID;// I’ll defensively leave these here just in case.
if (isset($_POST['comment_post_ID'])) return $postID;
if (isset($_POST['not_spam'])) return $postID; // akismet fix
if (isset($_POST["comment"])) return $postID; // moderation.php fix
if (!isset($_POST['tagset'])) return $postID; // if there’s no tags passed in anyway…
正是这几句语句中的几句引起了这个问题, 引起这个问题的这两句语句是:
if ( !wp_verify_nonce($_POST['utw-verify-key'], ‘utw’) )
return $postID;
if (!isset($_POST['tagset'])) return $postID; // if there’s no tags passed in anyway…
这两语句在用wordpress自带的编辑器是不会导致问题发生, 因为 Ultimate Tag Warrior 3.14159265 自动会在网页中嵌入 utw-verify-key 和 tagset , 在发布文章时, 自然就能检测到, 所以就不会在这里 return 了, 但离线编辑器可不会发送这两个参数, 从而导致在这两个地方自动退出, 而没有save tags。 引发文章最初提到的问题。
修改方法就是把上述的两个语句注释掉就可以了, 在 Ultimate Tag Warrior 3.14159265 以前的版本中没有上面提到的这些语句, 所以从来没有出过问题。 不知道这两行程序注释掉会带来什么问题, 我现在也不得而知, 不过就目前测试来说, 没有出现任何问题。
如果你也发现上述的这些问题, 可以试着退回到原来的版本, 或者修改上述语句就可以解决了。
btw: 今天又发现一个插件的问题, Admin Drop Menu 安装之后, 导致 Subscribe to me 插件在 “选项” 菜单下的调用不正确, 原因是因为调用的文件发现了变化, 具体是哪里出问题, 我正在查找, 如果有人已经发现了这个问题, 请赐教, 谢谢!
您喜欢本文吗?即刻订阅"偶爱偶家",精彩文章不再错过!现在就给我们留个话吗?



4 responses to "新版UTW导致离线发文丢失tags"
Live Writer在Wordpress中离线发布日志时tag和缩略名的解决办法…
鼓捣了两天Wordpress,遇到诸多问题,其中一个就是在用Live Writer离线发布日志的时候,无法定义tag和缩略名。经过一番搜索和询问,终于找到了比较完美的解决办法(感谢偶爱偶家提供的….
天啦,终于在你这里找到原因了。我转到wordpress以后就从来没有写过tags了。就是发不上去,中文也有点冲突,后来我就懒的管了
[...] 解决方案 [...]
[...] 我一直用zoundry离线工具来写博文,但zoundry不方便的就是不能与UTW兼容,当用TAG来上传时,在post里显示不了,另外wordpress的slug也不能离线修改。查了半天,终于有了解决方案。关于tag请参看偶爱偶家,关于slug可以装一个cos-tool插件,然后在zoundry的正文中插入”[slug]slug[/slug]”来修改slug. 感谢二位仁兄的solution. [...]