Google Crisis Response(Google)
災害に関する情報源や、行方不明者情報の収集と検索を行う『パーソンファインダー』を初めとするツールの提供が行われています。

2007年7月23日 月曜日

WordPress 2.2 への道

Filed under: WordPress
時間:23時47分
投稿者:よしとも
AddClips 経由でソーシャルブックマークに登録

 さすがにそろそろ WordPress を 2.2 にアップグレードしたいと思い、ローカルサーバーに複製を作って挑んでみました。

 消えても平気ということで、いきなり 2.0.x から 2.2.1 にアップグレード。見事にこけました。文字化け+日本語リソースファイル読まない+プラグイン動かない。わかりやすいことです。

 やっぱり間を飛ばしちゃだめだよねと、今度は 2.1.3 にアップグレード。WP Paginate .2.2 を有効にすると表示が真っ白になるのと WP-AddQuicktag 0.2 のバージョンアップが必要なの以外はとりあえずOK。WP-AddQuicktag は乙彼さんによる日本語版の WP-AddQuicktag (ja) 0.4 にしました。WP Paginate の代わりは検討中です。お勧めのがあったらぜひ教えてください。

 一番やばいのは、自作の AmazonLink(未公開バージョン)の Ajax 部分です。UTF-8 でデータを返すはずなのに、なぜか Shift_JIS で処理されてます。当然文字化けしてしまって、検索結果が表示できなくなってます。原因究明のためしばし研究します。リリースが伸びてしまいました。期待していただいている BoozerBlog の方(お名前が見つけられませんでした)申し訳ないです。

 プラグイン以外での悩みは、テンプレートタグ(正確には PHP のユーザー関数)の wp_list_categories()
 2.1.x からは wp_list_cats() が非推奨となり、wp_list_categories() を使うようにとのお達しがありました。それじゃあと使ってみたのですが、children に相当するパラメーターがありません。第一階層のカテゴリだけをメニューのように表示させたいのですが、それにはこのパラメーターの機能が必須なのです。wp_list_cats() でしばらく済ませるということも考えましたが、普通に children が効きませんでした。これはどういうことだと調べてみると、wp-includes/deprecated.php で次のように定義されていました。パラーメーターが完全に無視されています。互換性をなくしておいて非推奨はひどい。

  1. function wp_list_cats($args = '') {
  2.     if ( is_array($args) )
  3.         $r = &$args;
  4.     else
  5.         parse_str($args, $r);
  6.  
  7.     // Map to new names.
  8.     if ( isset($r['optionall']) && isset($r['all']))
  9.         $r['show_option_all'] = $r['all'];
  10.     if ( isset($r['sort_column']) )
  11.         $r['orderby'] = $r['sort_column'];
  12.     if ( isset($r['sort_order']) )
  13.         $r['order'] = $r['sort_order'];
  14.     if ( isset($r['optiondates']) )
  15.         $r['show_last_update'] = $r['optiondates'];
  16.     if ( isset($r['optioncount']) )
  17.         $r['show_count'] = $r['optioncount'];
  18.     if ( isset($r['list']) )
  19.         $r['style'] = $r['list'] ? 'list' : 'break';
  20.     $r['title_li'] = '';
  21.  
  22.     return wp_list_categories($r);
  23. }

 どうしようもない状況です。仕方がないのでタグを無効にしました。

 2.2.1 への道は険しいです。果たしてたどり着けるのはいつのことでしょうか。

2007年7月25日 追記

 AmazonLink の原因が判明。JavaScript からの検索リクエストを中継するためのプログラムに書いてある PHP 関数 header() の使い方が間違っていました。

 正しいのがこれ。

  1. header('Content-Type: text/plain; charset=UTF-8');

 これを、このように間違えていました。引数の数とかはあっているので、これだと構文エラーにはならないのです。

  1. header('Content-Type', 'text/plain; charset=UTF-8');
Comments (2)

HTML convert time: 0.163 sec. Powered by

Images is enhanced with WordPress Lightbox JS by Zeo