WordPressで画像アップロードできない


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');
         }

以上で対応完了です。