无法Trackbacks

升级WordPress2.0以后似乎无法正常trackback,一直以为是对方关闭了trackback,今天问了海豚才知道是WordPress2.0的一个bug。有一种去除数据库中相关数据的方法,不过不太愿意改动数据库,操作比较麻烦,还有后期的问题。

来自終極邊疆BLOG的解决方案如下:

wp-includes/function-post.php line 700:

  1. if ( empty($to_ping) )
  2. return;

改成

  1. if ( empty($to_ping) ) {
  2.     $wpdb->query("UPDATE $wpdb->posts SET to_ping = '' WHERE ID ='$post_id'");
  3.     return;
  4. }

wp-admin/execute-pings.php line 21:

  1. // Do Trackbacks
  2. while ($trackback = $wpdb->get_row("SELECT ID FROM $wpdb->posts WHERE TRIM(to_ping) != '' AND post_status != 'draft' LIMIT 1")) {
  3.   echo "Trackback : $trackback->ID";
  4.   do_trackbacks($trackback->ID);
  5. }

改成

  1. // Do Trackbacks
  2. // The old code will cause infinite loop when trackback failed.
  3. //
  4.  
  5. $trackbacks = $wpdb->get_results("SELECT ID FROM $wpdb->posts WHERE TRIM(to_ping) != '' AND post_status != 'draft'");
  6.  
  7. if (is_array($trackbacks) && count($trackbacks)) {
  8.     foreach ($trackbacks AS $trackback  ) {
  9.         echo "Trackback : $trackback->ID";
  10.         do_trackbacks($trackback->ID);
  11.  
  12.     } // end foreach
  13.  
  14. }

我如此修改以后似乎trackback还有些不正常,有些能ping通,有些则不能,我自己都无法trackback自己。

Update:多方修改以后,现在只能trackback日志中的地址。

2006-01-14 Update:执行www.yourdomain.com/wp-admin/execute-pings.php trackback才全发出去 🙁

wordpress,bug

《无法Trackbacks》有1个想法

发表评论

电子邮件地址不会被公开。 必填项已用*标注