2012/12/27

Wordpress3.5(追記:3.5.1も) と HeadSpace2

腰かけSE様よりご指摘をいただき訂正:2013-03-23)

WordPressのプラグインHeadSpace2の設定画面で、「ページモジュール」表示中に、

  • モジュールのドラッグ&ドロップができない。
  • メニューバーの「メニューを閉じる」でメニューは閉じない。
  • モジュールの「編集」ボタンをクリックすると、おそらく表示しているページにappendかprependされるだろう要素が無装飾で表示されてしまう。
という問題に出くわした。


WordPressは最近バージョンが3.5になったらしいのだけれど、そもそも最近になって使い始めたものだから前のバージョンだったら動くのかもわからない。

ただ、なんとなくだけど上記の症状から jQuery か jQuery ui の挙動がおかしい感じがする。。。


GoogleChromeの“要素を検証”で確認

対象のページで
右クリック > “要素を検証(N)” > “Resources”
で load-scripts.php にエラーを発見。

やっぱり jQuery の読込み時にエラーが発生しているみたいだ。


jQuery関連のバージョンダウンでサクッと解決

調べてみるとWordPressが3.5になったときに、jQuery 関連のバージョンも変更されていたので、
とりあえず WordPress3.4.2 に内包されている jQueryフォルダ(/wp-includes/js内) をアップロードしてみたら、上記3つの問題は全て解決。

他のプラグインとかで問題が出てくるかもしれないが、今のところは何も起きていない。


注意

おそらくWordPressのアップグレードに伴うjQueryのバージョン変更により、HeadSpaceが正常に動作しなくなったものと考えていますが、実際はどこがどうエラーを起こしているかまでは検証してはおりません。


追記:WordPress3.5.1でも同じような症状にでくわした。

上記と同様にjQueryフォルダを3.4.2のものと入れ替えても解決しないので、
フォルダ内を覗いてみると3.4.xから3.5.xのときにjsのファイル名が変わってた。

jQuery
[wp3.4]jquery.js(ver.1.7.2) ⇒ [wp3.5]jquery.js(ver.1.8.3)
非圧縮ファイル
[wp3.4]jquery.xxx.dev.js ⇒ [wp3.5]jquery.xxx.js
圧縮ファイル
[wp3.4]jquery.xxx.js ⇒ [wp3.5]jquery.xxx.min.js
追加ファイル
[wp3.5]jquery.masonry.min.js
uiフォルダ内
みてない

つまり、WordPress3.4.2内のjQueryフォルダを読込ませるだけでは、load-script.phpscript-loader.php はちゃんとjsファイルを読込めてないということだから、 WordPress3.5.1の load-script.phpscript-loader.php 内のjQuery関連のjsファイル読込み部分を書き換えることで解決するはず。

でも面倒だったので、機能不全にはなっても致命的エラーはないだろうと高を括って WordPress3.4.2のload-script.phpscript-loader.phpと入れ替えて解決。 ちなみに、WordPress3.4.2のload-script.phpscript-loader.phpだと122行目、3.5.1だと127行目あたりでjQuery関連を読込んでいる。


さらに追記:最終的な解決方法

上記の方法でHeadSpaceは動くようになった。が、管理画面上でフォーム部品(主にボタン)の描写と挙動がおかしくなった。

あるじゃないか、致命的なエラー。描写はともかく挙動がおかしくなるのは困る。


ということで不完全燃焼気味の応急処置の方法は、以下のようになる。

  1. /wp-includes/js/jQuery//wp-includes/load-script.phpscript-loader.phpを3.4.2のものと入れ替える。
  2. HeadSpaceの設定をする(以後、変更しないでいいように入念に)。
  3. /wp-includes/js/jQuery//wp-includes/load-script.phpscript-loader.phpを3.5.xのものに戻す。

jQueryフォルダ交換とload-script.phpscript-loader.php内のjQuery読込み部分のみの書換をした場合については未検証。


4 件のコメント:

  1. 私も同じような現象が発生しています。
    ちなみにWordPress3.4.2の時はちゃんとモジュールのドラッグ&ドロップが出来ていました。
    jQueryをWordPress3.4.2のものに変更して確認してみます。

    返信削除
    返信
    1. 初コメント!ありがとうございます。

      上記のHeadspace2の問題は、自分以外の人間が試行錯誤しながら設定したWP内で起こった問題を、自分なりに調べた上での解決策ですので、万人に通用する方法ではないかも知れません。

      よろしければその後どうなったか教えていただけませんか?

      削除
  2. HeadSpace2のトラブル対応で参考にさせて頂きました。
    実際に行ってみたのですが、最終的な解決方法で無事、トラブルを解消することが出来ました。
    1点、違う点ですが、wp-includesフォルダの中にload-script.phpが無く、script-loader.phpを入れ替えることによってモジュールの移動が出来るようになりました。
    有難う御座います。

    返信削除
    返信
    1. ご指摘いただきありがとうございます。

      load-script.phpは別のところにあるものでした。
      指摘いただいた部分を修正しておきます。

      削除