WordPressテーマ「LION MEDIA」のjQuery互換性問題に力技で対処する。

WordPressテーマ「LION MEDIA」のjQuery互換性問題に力技で対処する。

つい二日前、徒労日記がスローダウンし、表示できない状態が半日ほど続きました。
ご訪問いただいた方、まことに申し訳ありません。

直接的な原因はプロセスの異常な高負荷状態が続き、AWSのCPU負荷許容量(バーストリミット)を食いつぶしたため。

それが何故起きたのかは結局わかりませんでした。
ただ言えるのは以下を解決するため、ダッシュボードでWordpressをポチポチ弄った後起きたという事です。

投稿時にカテゴリが選べない

しばらくこの問題に気づいていませんでした。

しかし、よく見ると最近の投稿のカテゴリがすべて雑記(デフォルト)になってる。
投稿時に「あれ、レ点つかないな?」と思いつつ、クリックだけして結果を確認をしていなかったんですね。

a woman holds her hands over her face

この原因を調べると、テーマ固有であることがわかりました。
そしてなぜ最近?というと、jQuery互換性確保のためにデフォルトで呼び出されていた”jquery-migrate”がWordpress 5.5からなくなった為でした。

それを補うには、別途同様のプラグインを入れる必要があります。

Enable jQuery Migrate Helper – WordPress プラグイン | WordPress.org 日本語

WordPress 5.5 へのアップデートでは、jquery-migrateとして知られている移行ツールがデフォルトで有効にならなくなりました。
(中略)
このプラグインは一時的なソリューションとして機能し、サイトの移行スクリプトを有効にして、プラグインやテーマの作者がコードを更新したり、テストしたりするための時間を与えます。

これを入れたら、カテゴリ選択問題は直りました。
ただ、プラグイン説明の通り暫定措置であり、いつかは対処しなければなりません。

 

WordPress5.6からはMigrate自体が廃止されるとのアナウンスです。

恒久処置はテーマの修正

今使っているテーマ”LION MEDIA[ライオン メディア]”では、Migrate Helperを有効化すると警告が出るようになります。

jQuery Migrate 3.0.1 の使い方と警告文の自分なりのまとめ | 私的なjQuery他

JQMIGRATE: ‘ready’ event is deprecated

"ready"イベントは、例えば$( document ).on( "ready", fn )のように 登録し、documentが準備された時に発生します。しかし、 ブラウザのDOMContentLoadedイベントが起きる前に登録しないと発生しません。

ページの読み込み後に jQuery やプラグインを非同期で読み込んだりすると もう実行されません。 "ready"イベントは廃止予定になり 3.0 で削除されました。

LION MEDIAは無償ながら非常に高機能なテーマであり、今後も使い続けたい。
ただ2018年のVer 2.0公開以降更新されておらず、無料テーマが今後改善されるかは不明。

よって自分でこの’ready’記述を探したりもしたけれど、見つからない。

現時点では困っているのはカテゴリが選択できない事だけ。
そこでカテゴリの禁則処理自体をパスしている方が居たので参考にさせてもらいました。

この方が使うテーマはLION BLOG[ライオン ブログ]ですが、処置は一緒です。
テーマエディタでfunction.phpを開き、下記の「//追記ここから~//追記ここまで」の部分を挿入します。

//////////////////////////////////////////////////
//投稿ページカテゴリー選択を1つのみに変更
//////////////////////////////////////////////////
function limit_category_select() {?>
  <script type="text/javascript">
  jQuery(function($) {
    // 投稿画面のカテゴリー選択を制限
    var categorydiv = $( '#categorydiv input[type=checkbox]' );
    categorydiv.click( function() {
      $(this).parents( '#categorydiv' ).find( 'input[type=checkbox]' ).attr('checked', false);
      $(this).attr( 'checked', true );
    });
    // クイック編集のカテゴリー選択を制限
    var inline_edit_col_center = $( '.inline-edit-col-center input[type=checkbox]' );
    inline_edit_col_center.click( function() {
      $(this).parents( '.inline-edit-col-center' ).find( 'input[type=checkbox]' ).attr( 'checked', false );
      $(this).attr( 'checked', true );
    });
    $( '#categorydiv #category-pop > ul > li:first-child, #categorydiv #category-all > ul > li:first-child, .inline-edit-col-center ul.category-checklist > li:first-child' ).before( '<p style="padding-top:5px;">カテゴリーは1つしか選択できません</p>' );
  });
  </script>
  <?php }
add_action( 'admin_print_footer_scripts', 'limit_category_select' );


//追記ここから
//////////////////////////////////////////////////
//WordPress 5.5からのjquery-migrate.min.js非推奨に対応。
//カテゴリのロック制限を外す (2020-10-29)
//////////////////////////////////////////////////
function remove_action_limit_category_select() {
  remove_action("admin_print_footer_scripts","limit_category_select");
}
add_action("after_setup_theme","remove_action_limit_category_select");
//追記ここまで

//////////////////////////////////////////////////
//イメージURLから画像のIDを取得
//////////////////////////////////////////////////

これ以降、カテゴリが無事選択できるようになりました。
jQuery Migrateプラグインも特に警告を発していません。

このlimit_category_select()関数の目的である「複数のカテゴリを割り当てない」処理自体が無効化されるため、投稿時は注意が必要。

コメントを残す