No comments have been added to this post yet.

移动WordPress的留言

由于搞了个 WP 的 P2P 站原故,有机会对 WP 有更多的了解,因为那边前后台的改动还是颇多的,所以接连两天来谈WP的问题,眼看Blog本业反而快要荒废了,实在是那个站占用我的很多空闲时间,前前后后一直在不断地改。言归正传回到主题,如果看官们没明白标题是什么意思的话,这儿可以加一个副标题:修改留言挂接的文章ID。

不知道大家有没有一个习惯,就是不随意删除文章、留言、分类或链接,以保证ID的连贯,其实在WP中这4种有ID号的都有开关:文章可以存为草稿;留言可以转入审核;分类可以不显示文章数为0的;链接可以选择不显示。所以没必要一定要删除它。

对于留言来说,我们经常遇到这种情况,比如说收到一些spam,或者一些粗心的用户留言时回复错了文章。前者可以转入审核,留待以后自用,用的时候编辑成自己的留言就行了,很多时候与后者一样都要移动留言所挂接的文章ID号才行。就WP来说,并未直接提供这个功能,一般的办法是在PhpMyAdmin中找到wp-comments表中该留言的comment_post_ID进行修改,实在是很不方便。

其实我们在编辑留言时查看一下源码可以看到这么一条隐藏的<input>如下:
[code lang=”xml”][/code]
对留言来说,必须要取得这一条信息才行的。那修改edit-form-comment.php把这条的hidden换成text保存上传。在后台随意找一条留言编辑我们来尝试修改一下文章ID,编辑留言后会发现文章ID并未保存,这就说明这条<input>仅仅是从数据库中取得数据而并不发送更新数据。因为在源码中可以看到编辑留言整个表单的action是post.php,在WP1.5.2中直接修改post.php(672行左右)让它也发送给数据库,WP 2.0.1则在wp-includes/comment-functions.php(178行左右)。

代码片段(wp1.5.2和wp2.0.1代码内容是一样的,汉字部分为注释):
[code lang=”cpp”]$result = $wpdb->query(”
UPDATE $wpdb->comments SET /*插入下面一行*/
comment_post_ID = ‘$comment_post_ID’,
comment_content = ‘$content’,[/code]

最后可以在edit-form-comment.php把comment_post_ID的<input>挪动一下位置再自行加一点样式,让其美观一点。下图是wp 1.5.2的效果,2.0.1也可以照着来。配图

提示(2.0用户):

与1.5不一样,2.0中wp_posts表中增加了一个字段comment_count,而我上面的方法仅对wp_comments进行操作(2.0编辑留言默认行为)。那导致的结果是什么呢?就是如果你直接移动一个被批准的留言,那移动后,原文章的comments数不会变,正确的是减一;移动至的文章则是正确的。不过我们可以用一个巧妙的方法来解决这个问题,其实就是WP自身的功能。即:当你想移动一个被批准的留言时,先编辑此留言,将其转为待审核留言,然后再次编辑此留言在Post_ID中填入要被移动至的文章的ID即可,确定前可以将此留言选定为被批准。除此外与1.5是一样的,非常正常。

6 Comments

  1. 亿城雪 Comments @ 11:34:22 on 2006-02-08

    你还在用Hashcash?

  2. Blogging Pro China » Blog Archive » 移动WordPress的留言 Pingbacks @ 11:45:34 on 2006-02-21

    […]   移动WordPress的留言,有时候会遇到来访者粗心留言在错误的文章后,我们可以直接移动他们的留言,而不是删除它。 comments 留言 move […]

  3. metaldudu Comments @ 22:56:04 on 2006-02-21

    hack这个页面的方法值得借鉴,不过感觉这样的错误不是很多。今天修改了wp里的page和post,通过后台也不是很麻烦,不过同样不是经常用的。
    OP9下回复框正常,嘿嘿。

  4. zhu8 Comments @ 20:46:06 on 2006-07-02

    雨吁,久仰!我用wordpress遇到一个问题,就是在修改已存在的链接或者留言时,文字就都乱了。比如明明是“于无声处听什么”这几个字会变成“于无声处听什乿 />

  5. Dark Comments @ 21:28:58 on 2006-07-02

    检查一下你的链接,后面出现了一个input了。或者可能是什么插件作祟。

  6. career Comments @ 06:27:41 on 2006-07-21

    good day!