この記事は最後に更新してから1年以上経過しています。
説明
WordPressの更新が遅れていたサイトを少し前に更新したところ、jQuery UI sortableを使って拡張したページに不具合が発生しました。WordPressの更新に伴って内部のjQuery UIが更新されたことに起因すると思われ、これを機にWordPressとそれに組み込まれたJavaScriptライブラリのバージョンを確認してみました。
調べたのはWordPress 3.0から最新版(4.1.1 4.8.0)で、jQuery、jQuery UI、TinyMCEそれぞれのバージョンを対象にしました。以下に示した内容は、それぞれのソースコードに記載されたバージョン情報です(青字はWordPressのバージョンアップに伴ってバージョンアップしたところ)。
WordPress | jQuery | jQuery UI | TinyMCE |
---|---|---|---|
WordPress | jQuery | jQuery UI | TinyMCE |
3.0 | 1.4.2 | 1.7.3 | 3.2.7 |
3.0.1 | 1.4.2 | 1.7.3 | 3.2.7 |
3.0.2 | 1.4.2 | 1.7.3 | 3.2.7 |
3.0.5 | 1.4.2 | 1.7.3 | 3.2.7 |
3.1 | 1.4.4 | 1.8.9 | --- |
3.1.1 | 1.4.4 | 1.8.9 | 3.3.9.3 |
3.1.2 | 1.4.4 | 1.8.9 | 3.3.9.3 |
3.1.3 | 1.4.4 | 1.8.9 | 3.3.9.3 |
3.1.4 | 1.4.4 | 1.8.9 | 3.3.9.3 |
3.2 | 1.6.1 | 1.8.12 | 3.4.2 |
3.2.1 | 1.6.1 | 1.8.12 | 3.4.2 |
3.3 | 1.7.1 | 1.8.16 | 3.4.5 |
3.3.1 | 1.7.1 | 1.8.16 | 3.4.5 |
3.3.2 | 1.7.1 | 1.8.16 | 3.4.5 |
3.4 | 1.7.2 | 1.8.20 | 3.4.9 |
3.4.1 | 1.7.2 | 1.8.20 | 3.4.9 |
3.4.2 | 1.7.2 | 1.8.20 | 3.4.9 |
3.5 | 1.8.3 | 1.9.2 | 3.5.6 |
3.5.1 | 1.8.3 | 1.9.2 | 3.5.8-wp |
3.5.2 | 1.8.3 | 1.9.2 | 3.5.8-wp2 |
3.6 | 1.10.2 | 1.10.3 | 3.5.8-wp2 |
3.6.1 | 1.10.2 | 1.10.3 | 3.5.8-wp2 |
3.7 | 1.10.2 | 1.10.3 | 3.5.9 |
3.7.1 | 1.10.2 | 1.10.3 | 3.5.9 |
3.8 | 1.10.2 | 1.10.3 | 3.5.9 |
3.8.1 | 1.10.2 | 1.10.3 | 3.5.9 |
3.8.2 | 1.10.2 | 1.10.3 | 3.5.9 |
3.9 | 1.11.0 | 1.10.4 | 4.0.21.1 |
3.9.1 | 1.11.0 | 1.10.4 | 4.0.21.1 |
3.9.2 | 1.11.0 | 1.10.4 | 4.0.21.1 |
4.0 | 1.11.1 | 1.10.4 | 4.1.4 |
4.0.1 | 1.11.1 | 1.10.4 | 4.1.4 |
4.1 | 1.11.1 | 1.11.2 | 4.1.7 |
4.1.1 | 1.11.1 | 1.11.2 | 4.1.7 |
4.1.2 | 1.11.1 | 1.11.2 | 4.1.7 |
4.1.3 | 1.11.1 | 1.11.2 | 4.1.7 |
4.1.4 | 1.11.1 | 1.11.2 | 4.1.7 |
4.1.5 | 1.11.1 | 1.11.2 | 4.1.7 |
4.1.6 | 1.11.1 | 1.11.2 | 4.1.7 |
4.1.7 | 1.11.1 | 1.11.2 | 4.1.7 |
4.2 | 1.11.2 | 1.11.4 | 4.1.9 |
4.2.1 | 1.11.2 | 1.11.4 | 4.1.9 |
4.2.2 | 1.11.2 | 1.11.4 | 4.1.9 |
4.2.3 | 1.11.2 | 1.11.4 | 4.1.9 |
4.2.4 | 1.11.2 | 1.11.4 | 4.1.9 |
4.3 | 1.11.3 | 1.11.4 | 4.2.3 |
4.3.1 | 1.11.3 | 1.11.4 | 4.2.5 |
4.4.0 | 1.11.3 | 1.11.4 | 4.2.8 |
4.4.1 | 1.11.3 | 1.11.4 | 4.2.8 |
4.4.2 | 1.11.3 | 1.11.4 | 4.2.8 |
4.4.3 | 1.11.3 | 1.11.4 | 4.2.8 |
4.5.0 | 1.12.3 | 1.11.4 | 4.3.8 |
4.5.1 | 1.12.3 | 1.11.4 | 4.3.10 |
4.5.2 | 1.12.3 | 1.11.4 | 4.3.10 |
4.5.3 | 1.12.4 | 1.11.4 | 4.3.10 |
4.6.0 | 1.12.4 | 1.11.4 | 4.4.1 |
4.6.1 | 1.12.4 | 1.11.4 | 4.4.1 |
4.7.0 | 1.12.4 | 1.11.4 | 4.4.3 |
4.7.1 | 1.12.4 | 1.11.4 | 4.4.3 |
4.7.2 | 1.12.4 | 1.11.4 | 4.4.3 |
4.7.3 | 1.12.4 | 1.11.4 | 4.4.3 |
4.7.4 | 1.12.4 | 1.11.4 | 4.5.6 |
4.7.5 | 1.12.4 | 1.11.4 | 4.5.6 |
4.8.0 | 1.12.4 | 1.11.4 | 4.6.3 |
※WordPress 3.1のTinyMCEのバージョン情報は、ソースコードの該当箇所が'@@'になっていたため'---'としています。
こうやって見比べると、WordPressのメジャーアップデート時はJavaScript関連のチェックを必ず行うようにし、古いバージョンのWordPressを一気にアップデートする際はより注意が必要なことがわかります。
挙動がおかしかった原因
さて挙動がおかしかったのは、sortableのマウスオーバー時の処理部分でした。以下はその抜粋です。
$( '.drag-drop' ).sortable( {
over: function ( event, ui ) {
$(this).find( '.ui-state-highlight' ).show();
if ( $(this).attr( 'id' ) != ui.sender.attr( 'id' ) && ui.sender.find( 'li' ).length == 1 && ui.sender.find( 'li.ui-state-placeholder' ).length == 0 )
ui.sender.append( '<li class="ui-state-placeholder"> </li>' );
else
$(this).find( '.ui-state-placeholder' ).hide();
},
上記のif文でui.senderのattrメソッドを呼び出しているのですが、WordPress 4.1.1でドラッグ操作を行うと、エラー(Chromeのエラー表示は「Cannot read property 'attr' of null」)となっていました。uiパラメータの内容をログ出力すると、エラー時にはui.senderがnullとなっていました。このエラーの対処としてui.senderがnullの場合は何も処理しないように変更。これにより、おかしな挙動はなくなりました。
本件はレアケースかもしれませんが、メモ書きとして残しておきます。
最終更新 : 2018年05月27日 10:46
お勧め
get_next_image_link(2021年7月25日 更新)
wp_after_insert_post(2020年12月11日 更新)
wp_save_post_revision(2024年1月10日 更新)
wp_debug_backtrace_summary(2012年6月15日 更新)
nocache_headers(2018年5月27日 更新)