WP2.7: WP2.6からアップグレード

暫くまともにメンテナンスしていなかったのですが、正月休みを利用して最新版の2.7まで一気にアップグレードです。まだ詳細までは動作確認していませんが、今のところは次の修正内容だけで問題なく動作中。アップグレード手順もいつもと変わらないので、簡単に。

  1. WordPress | 日本語から2.7をZIP形式でダウンロード
  2. ZIPアーカイブをとりあえず展開
  3. wp-config-sample.phpをコピーしてwp-config.phpを作成: 前バージョンの内容にあわせて変更し、新バージョンからの項目があればその分を記載・修正する
  4. wp-includes/formatting.phpを修正(via cefa::blog ? Blog Archive ? MathML: itexToMMLを導入する)
  5. wp-includes/category-template.phpを修正(via cefa::blog ? Blog Archive ? WP2.5: タグクラウドの表示上限を上げる)
  6. wp-includes/widgets.phpを修正(コメント表示用のWidgetがそのままでは動作しなかった為修正: 下記に詳細記載)
  7. 全て上書きアップロード
  8. ダッシュボードのURLにアクセスして管理権限を持つユーザでログインする

コメント表示用のWidgetに関する修正

恐らくそのままWPを利用している場合には関係ない項目です。application/xml+htmlでページを配信している場合には、構文エラーで正常に表示できなくなるので修正が必要です。

原因は関数 wp_widget_recent_comments の中で get_comment_link($comment->comment_ID) が返してくる値の中に “&” が入っている事。これを “&” とはくようにして置かないと構文解析エラーとなるわけです。今回は応急処置みたいなものなので、本当ならばじっくり対処する必要があるのかも?

修正箇所については上記の部分を htmlentities() を使って変換してやります。diff の結果は次の通り。

% diff widgets.php.org widgets.php | more
1401c1401
<                       echo  '<li class="recentcomments">' . sprintf(__('%1$s on %2$s'), get_co
mment_author_link(), '<a href="'. get_comment_link($comment->comment_ID) . '">' . get_the_title(
$comment->comment_post_ID) . '</a>') . '</li>';
---
>                       echo  '<li class="recentcomments">' . sprintf(__('%1$s on %2$s'), get_co
mment_author_link(), '<a href="' . htmlentities(get_comment_link($comment->comment_ID)) . '">' .
 get_the_title($comment->comment_post_ID) . '</a>') . '</li>';

今のところ正常に動作中です。