WordPressで画像アップロードできないケースはいくつか原因があるみたいです。今回はcformIIの相性の違いでした。
環境
WordPress3.0.1
現象
WordPress3.0.1で「新規投稿」の「画像アップロード」ボタン押下してもJavaScriptが利かず、通常ならlightboxのようなポップアップが表示され、画像アップロード画面がそのウィンドウ内に表示されるのですが、新規ブラウザ全画面で表示されてしまいます。
Chrome/FireFoxではエラー箇所がわからなかったので、IEで管理画面を表示させると以下のエラーが。
Web ページ エラーの詳細 ユーザー エージェント: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; GTB7.2; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; CMNTDF; .NET4.0C) タイムスタンプ: Fri, 13 Jan 2012 02:01:33 UTC メッセージ: catch ステートメントでは適用されますが、throw ステートメントでは適用されません。 ライン: 16 文字: 15511 コード: 0 URI: http://xxxxxx.jp/wp-content/plugins/cforms/js/jquery.js?ver=1.6.2
解析
どうやらプラグイン「cformii」が悪さしているようで、javascriptのバージョンの不一致でした。WordPress3.0.1の既存jqueryのバージョンより、cformIIの方が新しい為、画像アップロード・公開状態の編集・ステータスの編集等が動かなくなりました。
解決策
cformIIプラグインを直接編集しました。「cforms.php」の1640行目辺りの「wp_deregister_script、wp_register_script」をコメントアウトします。
if ( version_compare(strval($wp_scripts->registered['jquery']->ver), strval("1.6.1") ) === -1 ){ // wp_deregister_script('jquery'); // wp_register_script('jquery',$r.'/js/jquery.js',false,'1.6.2'); wp_enqueue_script('jquery'); } else wp_enqueue_script('jquery'); // load new jQuery UI shipped with WP if ( version_compare(strval($wp_scripts->registered['jquery-ui-core']->ver), strval("1.7") ) === 1 ){ wp_enqueue_script('jquery-ui-core'); wp_enqueue_script('jquery-ui-datepicker'); }
以上で対応完了です。