WordPress 5.5/5.7/6.0 へのアップグレードでクラシックエディタなどのプラグインが動かなくなった問題について(HPBテーマ & hpbseo、biz calendar等の jQuery 3.0 非互換対策)

update 最終更新日:2023年12月18日 at 9:43 PM

2週間前の事ですが、このWebサイトで動作しているブログシステム(CMS)である WordPress の更新通知が来ていたので、最新バージョンの 5.5 へバージョンアップしました。
嫌な予感はしていたのですが、予感通り、色々なプラグインが動かなくなりました。

WordPress 5.5 では、ブロックエディタの機能強化に加え、SEO 強化のためのコアサイトマップ追加(Core Sitemapsプラグインの統合、PHP の SimpleXML エクステンションが有効である事が前提)、旧バージョンの jQuery をサポートする jQuery Migrate の廃止、WordPress 側のバックグラウンド処理によるネイティブ Lazy-load 機能の実装、プラグインの自動アップデート機能の追加などが主な変更点のようです。

ところが、そのシステム変更により、私のサイトでは、以下のプラグインが正常に動かなくなってしまいました(警告レベルも含む)

hpbseo … ホームページビルダーから提供されるSEOプラグイン
Transposh … Webサイトに自動&手動翻訳機能をサポートするプラグイン
クラシックエディタ … WordPress の旧エディタをサポートするプラグイン
BackWPup … WordPress システムのプログラムとDBのバックアップ(警告)

2020.10.13 追記
biz calendar … ビジネスカレンダーを表示するプラグイン
ultimate social media icons … ソーシャルメディアボタンを表示するプラグイン(警告)
2020.12.23 追記
・WPFront Scroll Top … Top へ戻るボタンを表示するプラグイン
2021.01.01 追記
・テーマ: 千里のポータルサイト … 当サイトのテーマのプログラム(警告)
2021.02.16 追記
・hpb Dashboard … ホームページビルダーのダッシュボードのプラグイン(警告)

他にもあるかもしれませんが、上記のプラグインが影響を受けた事は確認しています。
原因は、それらのプラグインが旧仕様の jQuery を使用しているため、最新仕様の jQuery での動作を前提としてリリースされた WordPress 5.5 では動作しなくなったという事です。

なお、WordPress 5.5 ではブロックエディタの使用時に挙動がおかしい場合があり、今回リリースされたWordPress にはバグも潜んでいるようです。

2020.09.02 追記
WordPress 5.5.1 が2020年9月1日にリリースされ、ブロックエディタのバグが修正されています。

2021.03.27 追記
WordPress 5.7 へのアップグレード(jQuery Migrate が廃止され、jQuery 3.5.1 を適用)でクラシックエディタが正常に動作しなくなったため、 Classic Editor フォーラムのサポートスレッドにその詳細を投稿しました。
クラシックエディタの編集画面を開くと画面の再表示が繰り返され、勝手に投稿が更新されてしまう現象が発生しています(ブラウザの停止ボタンをクリックすると、停止します)。これは、恐らく SEO プラグイン「hpbseo」との干渉が原因ではないかと推測されます。
なお、jQueryMigrate の設定で「jQuery バージョン = レガシー 1.12.4-wp」に設定してもこの現象は改善されないので、クラシックエディタにはまだ問題があると思われます。
なお、現時点でクラシックエディタの検証済み最新バージョンは「5.6.2」なので、5.7での検証はされていないようです。

🔗 WordPress 5.7 has a problem with the edit screen of the classic editor

Enable jQuery Migrate Helperのインストール

前述のプラグインの問題に関しては、解決策があります。以下のリンクにある旧仕様の jQuery をサポートするプラグイン「Enable jQuery Migrate Helper」をインストールし有効化する事で解決します。

🔗 Enable jQuery Migrate Helper

このプラグインを有効化すると、ダッシュボードに以下のワーニングが表示されました。

2020.12.17 追記
WordPress 5.6 でリリースされた以下のプラグイン「Test jQuery Updates」により、jQuery Migrate が無効化された時の jQuery のテストが可能になりました。
(注意: このプラグインは、WordPress 5.6 専用です)

ホームページビルダーのSEOプラグイン「hpbseo」が非互換

この意味は、プラグイン「hpbseo」からコールされる Java スクリプト「hpbseo.js」で記述された jQuery の load メソッドが旧仕様なので、新仕様への修正を求めるものです。
該当する個所は、以下の通りイベントハンドラを登録するメソッドですが、このメソッドは、jQuery 1.9 で 廃止予定になり 3.0 で削除されました。

jQuery(window).load(function(){

上記の記述を以下のように修正するのが良いらしいので、やってみたところ、ワーニングは直ぐには消えませんでした。
しかし、後日にプラグインページを表示させたら、ワーニングが消えていましたので、この問題はこれで解決したようです。

ちなみに、「Enable jQuery Migrate Helper」は、WordPress 5.7 以降では動作しないと思われるので、今のうちに古いインターフェースの jQuery を修正する必要があります。

jQuery(window).on('load',function(){


hpbseo に関しては、以下のリンクに示す通り、WordPress の互換性の問題も発見しましたが、長らくプラグインの更新がされていないため、止む無く当方で hpbseo.php への修正を加えています。

よって、この非互換問題はプラグインの開発者にも報告するのが望ましいと思い、念のため以下リンク先のプラグイン・サポートのフォーラムにエスカレーションしておきました。

🔗 Request for correction of plugins (2 places)

2020.08.28 追記
本件に関しましては、開発元の Allegro Marketing にも報告していたのですが、本日、以下の通りメールにて正式な回答を頂きました。

Re: SEO Composerのお問い合わせがありました。
2020/08/28 (金) 14:43

三浦 様

お問合せ頂きまして有難うございます。
アレグロマーケティングユーザーサポートです。

hpb seo pluginに関しましてご指摘頂きまして有難うございます。
また、詳細な情報を頂きまして有難うございます。

修正する方向で対応できればとは考えておりますが、現時点ではまだ明確な回答が難しい為まずは、開発の方で詳細につきまして確認させて頂きます。
どうぞよろしくお願い致します。


2020.12.23 追記
jQuery Migrate Helper の設定で jQuery のバージョンを WordPress のデフォルト( jQuery 3.5.1)を選択すると、hpbseo.js に対し、以下の非互換通知を確認しました。

時刻         通知  プラグインまたはテーマ  ファイル位置
2020-12-23 15:13:00 jQuery.fn.bind() is deprecated https://www.senris.com/xxxxxx/wp-content/plugins//hpbseo/hpbseo.js

該当個所は以下の通りです。この bind メソッドは、 廃止予定になっているため、「.on」へ置き換えます。なお、「.unbind」は「.off」へ置き換えます。

$(id_prefix + "meta_des").bind("click blur keydown keyup keypress change", metades_cnt_obj.data, fncMetaDesCount);

以下のように修正します。

$(id_prefix + "meta_des").on("click blur keydown keyup keypress change", metades_cnt_obj.data, fncMetaDesCount);


jQuery Migrate Helper のログより、以下の非互換通知を確認しました。

時刻         通知  プラグインまたはテーマ  ファイル位置
2020-12-30 04:48:45 jQuery.fn.submit() event shorthand is deprecated https://www.senris.com/xxxxxx/wp-content/plugins/hpbseo/hpbseo.js

以下の .submit メソッドは、3.3 で廃止となったため、.on() や .trigger() に置き換えます。

$("#post").submit(submit_check_obj.data, fncSubmitCheck);

警告が出ないようにするため、以下のように書き換えます。

$("#post").trigger("submit", submit_check_obj.data, fncSubmitCheck);

2021.02.23 追記
jQuery Migrate Helper のログより、以下の非互換通知を確認しました。

時刻         通知  プラグインまたはテーマ  ファイル位置
2021-02-14 11:04:54 jQuery(window).on(\'load\'...) called after load event occurred https://www.senris.com/xxxxxx/wp-content/plugins/hpbseo/hpbseo.js

該当個所は、以下の行と思われます。
これは、ページ全体が既に読み込まれた後に windows に “load” イベントを追加しようとした場合に警告されます。この場合、”load” イベントハンドラは 実行されません。また、jQuery の ready ハンドラ内で “load” イベントハンドラの登録が遅すぎた場合に起こることもあるそうです。
jQuery 3.0 より、$(document).ready 関数に定義された処理と load 関数は常に非同期に動作するらしいので、load 関数を分離させるなどの対策も必要になるようです。

	$(window).on("load",dispimage_chk_obj.data,fncDispImageSetting);

本件については、修正すべきかどうかも含め、今のところ対処方法が未定となっております。
なお、該当する行のオジリナルは、以下の記述になっており、この非推奨の bind() メソッドを on() メソッドへ修正した後での jQuery Migrate からの警告です。

$(window).bind("load",dispimage_chk_obj.data,fncDispImageSetting);


2021.06.14 追記
現在、WordPress 5.7.2(PHP7.1/PHP7.4)の環境において、クラシックエディタならびにブロックエディタでクラッシュが発生しています。この現象は、hpb seo plugin の干渉に因ることが明らかになりました。
原因としては、WordPress 5.7 で jQuery のバージョンが 3.5.1 へ上げられ、hpb seo の jQuery の記述方法に非互換が発生しているものと推測します。
本件は、以下の WordPress フォーラム内の hpb seo plugin のサポートスレッドに記載しております。
また、開発元のアレグロマーケティングにも報告済みです。対応する方向で検討中との事でした。

🔗 クラシックエディタとの干渉

アレグロマーケティングからの正式回答(2件分)は以下の通りです。

Re: アレグロマーケティング “ご購入前/お申込み前のお問い合わせ”
2021/06/8 (火) 14:21

三浦 様
お問合せ頂きまして誠に有難うございます。
アレグロマーケティングユーザーサポートです。
ご指摘頂きまして有難うございます。
(いつも詳しい情報をご提供くださり感謝しております。)
クラシックエディタに対する干渉につきまして、開発者と情報を共有させて頂きました。
誠に申し訳ございませんが、現在リソースに空きが無く、すぐに対応する事は難しいのですが、原因を調査した上で、改修したいとは考えております。
改修の見込みが立ちましたら改めてご連絡差し上げますので、少々お時間を頂ければ幸いです。
ご不便をお掛けいたしまして申し訳ございませんが、ご理解の程、何卒よろしくお願い申し上げます。

Re: アレグロマーケティング “ご購入前/お申込み前のお問い合わせ”
2021/06/14 (月) 10:30

Miura 様
いつも大変お世話になっております。
アレグロマーケティングユーザーサポートです。
追加情報をお知らせ頂きまして有難うございます。
頂きました情報も開発と共有の上原因を調査し、対応次第ご連絡させて頂きます。
今後とも何卒よろしくお願い申し上げます。

アレグロマーケティングインフォメーションセンター info@allegro-inc.com


2021.06.25 追記
あくまでも、間に合わせでの対応となりますが、hpbseo の PHP プログラムにおいて、以下の関数を修正する事でブロックエディタでの動作不良は改善されるようです。

/**----------------------------------------------------------------------------
 * jsファイル読込(ダッシュボード用)
 * --------------------------------------------------------------------------*/
function fncHpbSeo_IncludeAdminJS() {
	wp_enqueue_script( "jquery");
	wp_enqueue_script( "hpbseo_admin_js", PLUGIN_URL . JS_FILE_NAME_ADMIN);
}

上記の関数「fncHpbSeo_IncludeAdminJS()」を以下のように修正します。これにより、プラグイン「Enable jQuery Migrate Helper」は不要となりますが、クラシックエディタの動作不良は改善されないようです。
更には、WordPress ダッシュボード内における「Jetpackごとの統計」がクラッシュし表示されなくなります。
よって、hpbseo の修正版がリリースされるまでは、できるだけ「Enable jQuery Migrate Helper」を有効化することを推奨します。(jQueryバージョンは「WordPressのデフォルト」でOK、「自動ダウングレード」をチェック)

/**----------------------------------------------------------------------------
 * jsファイル読込(ダッシュボード用)
 * --------------------------------------------------------------------------*/
function fncHpbSeo_IncludeAdminJS() {
// 旧jQueryの読み込み(ここから) - Added by Senri on June 25, 2021
		wp_deregister_script( 'jquery' );
		wp_register_script( 'jquery', ( 'https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js' ), false, null, true );
// ここまで

	wp_enqueue_script( "jquery");
	wp_enqueue_script( "hpbseo_admin_js", PLUGIN_URL . JS_FILE_NAME_ADMIN);
}

やはり、この部分は以下のように「jquery-migrate」を読み込ませる方法の方が良いかと思います。(別途、 ‘jquery-migrate-1.4.1.min.js’ をプラグインディレクトリへのアップロードが必要)

/**----------------------------------------------------------------------------
 * jsファイル読込(ダッシュボード用)
 * --------------------------------------------------------------------------*/
function fncHpbSeo_IncludeAdminJS() {
	wp_enqueue_script( "jquery");
	// for jquery-migrate - Added by Senri on July 3, 2021
	if ( substr($wp_version, 0, 3) >= '5.5' ) :
		wp_enqueue_script( 'hpbseo-jquery-migrate', '/'.PLUGINDIR.'/'.$plugin_dir.'/jquery-migrate-1.4.1.min.js', array('jquery'));
	endif;

	wp_enqueue_script( "hpbseo_admin_js", PLUGIN_URL . JS_FILE_NAME_ADMIN);
}

2022.06.28 追記
PHP 7.4 の環境において、デバッグモードで実行した際、以下のワーニングを確認しています。

[28-Nov-2021 05:19:48 UTC] PHP Deprecated:  join(): Passing glue string after array is deprecated. Swap the parameters in /**********/public_html/www.senris.com/*****/wp-content/plugins/hpbseo/hpbseo.php on line 517

これは、hpbseo.php で記述された join() 関数の使用法が非推奨との事です。
該当箇所は2か所ありますが、これは以下のように記述されています。

		//エラーメッセージ取得
		$err_msg = join($err_tmp,'<br />');

この join() 関数 は、implode() のエイリアスですが、上記の形式は、PHP 7.4 で非推奨とされ、 PHP 8.0 では仕様から削除されています。よって、この部分は以下のように修正します。

  //エラーメッセージ取得
  //$err_msg = join($err_tmp,'<br />');
	$err_msg = join('<br />',$err_tmp); // for PHP 8.0

2022.07.27 更新
hpbseo ですが、依然として問題を抱えており、WordPress 6.0 以降において、クラシックエディタなど、他プラグインとの干渉で正常に動作しなくなっております。
よって、現時点では、このプラグインを使用する事はお勧めしません。Yoast SEO, All in One SEO, Squirrly SEO など、他の SEO プラグインの使用を検討しても良いのかと思います。

但し、これらのプラグインを使用する場合は、hpb22 が出力する OGP Meta タグとの重複を避けるため、それぞれ以下のように オープングラフ Meta データの出力を抑制する設定にする必要があります。

* All in One SEO : フェイスブックの一般設定 ⇒ オープングラフマークアップを無効に設定
* Yoast SEO: Facebook 設定 ⇒ Open Graph メタデータを無効
* Squirrly SEO : Open Graph の出力制御Deactivate

2022.7.29 追記
テストの結果、hpbseo は、WordPress 6.0 において、以下の jQuery 系のプラグインと競合することが判明しました。

  • Code Syntax Block
  • Highlighting Code Block
  • Easy FancyBox

WordPress 6.0 において、基本的に jQuery 系のプラグインを入れると、hpbseo は動かなくなります。

2022.08.01 追記
以下の通り、 Yoast SEO の導入により、プラグイン「Markup (JSON-LD) structured in schema.org」ならびに「hpb seo plugin for WordPress」, 「Google XML Sitemaps」は不要となったため、アンインストールしました。
また、パンくずリスト生成プログラムは、 hpb22 の breadcrumb.php に入れ替えました。hpb20 でも問題なく使用できます。


2021.02.16 追記

ホームページビルダーのダッシュボードのプラグイン「hpb Dashboard」が非互換

jQuery Migrate Helper のログより、プラグイン「hpb Dashboard」の hpb_social_admin.js に対し、以下の非互換通知を確認しました。

時刻         通知  プラグインまたはテーマ  ファイル位置
2021-02-16 11:32:51 jQuery.fn.click() event shorthand is deprecated https://www.senris.com/xxxxxx/wp-content/plugins/hpbtool/hpb_social_admin.js

該当個所が2個所ありますが、記述形式は以下の通りです。”.click()” のような省略形メソッドは、jQuery 3.0 で非推奨となりました。

	.click(function(e){
   ・
   ・
	.click(function(){

警告を無くすには、以下のように、”.on()” メソッドに書き換えます。

	.on("click",function(e){
   ・
   ・
	.on("click",function(){

jQuery Migrate より、以下の非互換通知を確認しました。

時刻         通知  プラグインまたはテーマ  ファイル位置
2021-02-16 13:16:30 jQuery.isFunction() is deprecated https://www.senris.com/xxxxxx/wp-content/plugins/hpbtool/hpb_social_admin.js

jQuery 3.3 以降、「 jQuery.isFunction()」は非推奨になりました。
ほとんどの場合、その用法は typeof x === “function” に置き換えることで解決しますが、指摘されたプログラム(hpb_social_admin.js)をチェックしたところ、isFunction メソッドが見当たりませんでした。これは jQuery Migrate のバグの可能性もありますので、この問題は保留にしています。
他のプラグインでも同様の通知が来ているため、他のプラグインの動向も見ながら対応を決める予定です。

Transposhが非互換

本件は、偶々 Transposh のサポートフォーラムを覗いた時に気が付きました。
WordPress 5.5 へアップグレードしたら、TransPosh の編集用ダイヤログの表示が破壊されるというものです。
これも、jQuery Migrate の廃止が直接の原因と思われます。
Transposh のフォーラムで大騒ぎになっていたようなので、「Enable jQuery Migrate Helper」をインストールし有効化する事で解決するでしょうとスレッドにコメントしておきました。

🔗 WP 5.5 Update kills Transposh

なお、「Enable jQuery Migrate Helper」については、WordPress の「コアに同梱されている jQuery アップデートの移行期間用」の暫定プラグインであり、WordPress 5.6 の次のバージョンでは、jQuery の最新バージョンと jQuery migrate が含まれる予定だそうです。
さらに、jQuery migrate は、次の WordPress 5.7 には含まれないとの事。

いずれにしても、今回のリリースで明らかになった事は、全てのテーマとプラグインに対し、jQuery のインタフェースを最新にしなさいというのが WordPress のポリシーのようなので、早急に Transposh の作者がプラグインを修正してくれる事を祈ります。

2020.10.14 更新
本件に関して、Facebook を通じて作者へ連絡したところ、プログラムを修正する予定は無いとの回答だったので、やむを得ず自分で直す事にしました。
エラーの概要は以下の通りです。

時刻         通知  プラグインまたはテーマ  ファイル位置
2020-10-14 07:51:43 jQuery.fn.live() is deprecated https://www.senris.com/xxxxxx/wp-content/plugins/transposh-translation-filter-for-wordpress/js/admin/contexthelp.js

これは、jQuery バージョン 1.9で廃止となった live メソッドが使用されている事を意味しています。
当該プログラムを以下に示します。

!function(l){l(".tp_help").live("click",function(e){e.preventDefault(),window.scrollTo(0,0),l("#tab-link-"+jQuery(this).attr("rel")+" a").trigger("click"),l("#contextual-help-link").hasClass("screen-meta-active")||l("#contextual-help-link").trigger("click")})}(jQuery);
//# sourceMappingURL=contexthelp.js.map

上記プログラムを以下のように変更します。

!function(l){l(document).on("click",".tp_help",function(e){e.preventDefault(),window.scrollTo(0,0),l("#tab-link-"+jQuery(this).attr("rel")+" a").trigger("click"),l("#contextual-help-link").hasClass("screen-meta-active")||l("#contextual-help-link").trigger("click")})}(jQuery);
//# sourceMappingURL=contexthelp.js.map

2021.01.07 追記
WordPress 5.5 においては、上記修正により一旦動作するようになりました。
その後、WordPress 5.6 がリリースされた事で、jQuery Migrate の jQuery のバージョン設定で WordPress のデフォルト(jQuery 3.5.1 = WordPress 5.7 で正式サポート)を選択した場合は正常に動作しなくなりました。
この問題は、hpbseo.js でも同様の問題を確認しています。WordPress 5.7 がリリースされた時に動作確認するしかないかもしれません。

2021.02.16 追記
Transposh 1.0.7 のリリースならびに、WordPress 5.6.1 へのアップグレードにより、上記問題が解決され正常に動作するようになりました。
hpbseo.js も同様に動作するようになりました。

コアサイトマップ機能の無効化

WordPress 5.5 には、「Core Sitemaps プラグイン」の取り込みなど、余計な機能が追加され、以前のバージョンよりも重くなっています。
サイトマップに関しては、既にサードパーティー製の「XML Sitemaps Generator」などを使われている方も多いと思います。
よって、機能の重複を避けるため、以下のように WordPress のコアサイトマップ機能を無効化する選択肢もあります。

<?php

if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
add_filter( 'wp_sitemaps_enabled', '__return_false' );

ちなみに、WordPress のコアサイトマップと XML Sitemaps Generator の URL は、以下の通り異なるため、WordPress 5.5 との競合は発生しません。
また、XML Sitemaps Generator が動作している場合、WordPress のコアサイトマップの機能は自動的に無効化されているようです。

・コアサイトマップのURL:
 example.com/wp-sitemap.xml

・XML Sitemaps GeneratorのURL:
 example.com/sitemap.xml

2020.10.03 追記
突然、当サイトの URL が Google 検索から消えたので、Google Search Console にて、サイトマップを読み込ませてみたら、検出された URL の数が0なっていました。
根本的な原因は不明ですが、とりあえず、XML Sitemap Generator のプラグインを無効にし、再度有効化しました。
そして、WordPress のコアサイトマップを無効にする定義を functions.php に追記しました。
また、Google Search Console のサイトマップを一旦削除し、再度登録してみたら、以下のように今度は正常に読込みが行われ、URLが認識されました。
どうやら、WordPress のコアサイトマップの機能が悪さをしていたのかもしれません。

なお、Google Search Console にて、robots.txt の構文チェックも行ったところ、’Crawl-delay:’ のスペルミスが見つかった為、robots.txt も修正しています。一説によると、robots.txt の構文エラーも Google インデックスから外される要因になるらしいです。

2021.01.07 追記, 2022.07.26 – URL正規化に伴い修正
Google のクローラーへ XML Sitemaps Generator により生成されたサイトマップの存在を明示するため、”robots.txt” に以下の定義を追加しています。

Sitemap: https://senris.com/sitemap.xml

その他プラグイン (クラシックエディタ, BackWPup)

クラシックエディタ に関しては、私はもう使うことがないので、このまま静観します。放置しておけば、いつか更新されるかもしれません。
但し、このプラグインは、サポート終了予定なので、更新されないかも… 😓

2020.10.18 更新
クラシックエディタ v1.6 のリリースで不具合が修正されています。

BackWPup についても、ワーニングが表示されていますが、このプラグインは定期的に更新されており、いずれ更新通知が来るはずなので、様子を見たいと思います。

2020.09.23 更新
BackWPup は、バージョン 3.8.0 のバージョンアップで問題が解消されました。


2020.09.03 追記

ビジュアルエディターで改行タグが削除され、固定ページが乱れる問題

WordPress 5.x からなのですが、ビジュアルエディターなどで固定ページを編集すると、HTML の改行タグ”<br />”などが勝手に削除され、画面が乱れる問題が発生し困っていました。
ネットで調べたところ、以下のコードを記述することで解決するらしいので、やってみたところ無事この問題が解決しました!

/* 【WordPress ver.5.1.1以降】固定ページのみ自動整形機能を無効化 */
function disable_page_wpautop() {
    if ( is_page() ) remove_filter( 'the_content', 'wpautop' );
}
add_action( 'wp', 'disable_page_wpautop' );

/* ビジュアルエディタがタグを勝手に削除するのを阻止 WP5.5対応
---------------------------------------------------------------- */
function custom_tiny_mce_before_init( $init_array ) {
  global $allowedposttags;

  $init_array['valid_elements'] = '*[*]'; //すべてのタグを許可(削除されないように)
  $init_array['extended_valid_elements'] = '*[*]'; //すべてのタグを許可(削除されないように)
  $init_array['valid_children'] = '+a[' . implode( '|', array_keys( $allowedposttags ) ) . ']'; //aタグ内にすべてのタグを入れられるように
  $init_array['indent'] = true; //インデントを有効に
  $init_array['wpautop'] = false; //テキストやインライン要素を自動的にpタグで囲む機能を無効に
  $init_array['force_p_newlines'] = false; //改行したらpタグを挿入する機能を無効に

  return $init_array;
}
add_filter( 'tiny_mce_before_init', 'custom_tiny_mce_before_init' );

2021.02.13 追記
WordPress 5.6 のリリースに伴いプラグイン「TinyMCE Advaced」が「Advanced Editor Tools」に名前が変更となり、プラグイン設定において、ブロックエディタとクラシックエディタに対しての編集に関する詳細な設定ができるようなりました。
しかし、デフォルトの設定だとクラシックエディタで固定ページの編集を行うと上記の functions.php で記述されたプログラムに永久ループが発生し動作不良が起こることが判明しました。
この問題を解決するためには、Advanced Editor Tools のプラグイン設定で以下にように設定を変更する必要があります。

①タブ「旧エディター(TinyMCE)」を選択
②上級者向け設定の「□ クラシックブロックとクラシックエディター内のパラグラフタグを保持」をチェック

なお、上記設定により、WordPress 5.6 以降では、基本的に functions.php の定義は不要になるのかと思われます。


2020.10.13 追記

biz calendarのプラグインが非互換

jQuery Migrate Helper のログより、プラグイン biz calendar に対し、以下の非互換通知を確認しました。

時刻         通知  プラグインまたはテーマ  ファイル位置
2020-10-13 14:21:13 jQuery.fn.size() is deprecated; use the .length property https://www.senris.com/xxxxx/wp-content/plugins/biz-calendar/calendar.js


この「.size()メソッド」は現在の jQuery オブジェクトが保持する要素数を返しますが、jQuery 1.9 から「length」プロパティの使用が推奨されます。
.size() は廃止予定になり jQuery3.0 で削除されました。
該当個所は、calendar.js の以下の部分です。

jQuery(document).ready(function ($) {
	if ($("#biz_calendar").size() == 0) {
		return;
	}
	bizCalendar.start();
});

よって、以下のように修正しました。

jQuery(document).ready(function ($) {
	if ($("#biz_calendar").length == 0) {
		return;
	}
	bizCalendar.start();
});

2020.12.23 追記
jQuery Migrate Helper のログより、プラグイン biz calendar に対し、以下の非互換通知を確認しました。

時刻         通知  プラグインまたはテーマ  ファイル位置
2020-12-21 18:12:22 jQuery.fn.click() event shorthand is deprecated プラグイン: Biz Calendar https://www.senris.com/xxxxx/wp-content/plugins/biz-calendar/upload-holidays.js

該当個所は、upload-holidays.js の以下の通りです。

jQuery(document).ready(function($) {
	$('#holidays-upload').click(function() {

2行目を以下のように修正します。

jQuery(document).ready(function($) {
	$('#holidays-upload').on('click',function() {

2021.04.30 追記
現在、 Biz Calendar の使用を取り止め、代わりに以下の有料プラグイン「営業日カレンダー」を使用しています。

2022.08.05 更新
プラグイン「営業日カレンダー」が WordPress 6.0 で動作しなくなったため、以下のプラグイン「XO Event Calendar」に入れ替えました。

Ultimate Social Media Icons and Share Plugin のプラグインが非互換

jQuery Migrate Helperのログより、プラグイン Ultimate Social Media Icons and Share Plugin に対し、以下の非互換通知を確認しました。

時刻         通知  プラグインまたはテーマ  ファイル位置
2020-10-13 14:21:13 jQuery.fn.load() is deprecated プラグイン: Social Media and Share Icons (Ultimate Social Media)https://www.senris.com/xxxxx/wp-content/plugins/ultimate-social-media-icons/js/custom.js

該当する個所は、以下の通り、custom.js においてイベントハンドラを登録するメソッドですが、このメソッドは、jQuery 1.9 で 廃止予定になり 3.0 で削除されました。

function sfsi_hideFooter() {}

window.onerror = function() {}, SFSI = jQuery, SFSI(window).load(function() {
    SFSI("#sfpageLoad").fadeOut(2e3);
});

よって、以下のように修正しました。

function sfsi_hideFooter() {}

window.onerror = function() {}, SFSI = jQuery, SFSI(window).on('load', function()) {
    SFSI("#sfpageLoad").fadeOut(2e3);
});


2020.10.16 追記
Ultimate Social Media Icons and Share Plugin のプラグイン設定画面において、以下に警告が表示されました。

jQuery Migrate Helper — Warnings encountered
このページでは、以下の警告が発生しました。

https://www.senris.com/xxxxx/wp-content/plugins/ultimate-social-media-icons/js/custom-admin.js: 'hover' pseudo-event is deprecated, use 'mouseenter mouseleave'

イベント “hover” は、jQuery 1.9 で削除されました。
“hover” は “mouseenter mouseleave” のエイリアスであるため、.on(), .bind(), .delegate() などで使用している “hover” を “mouseenter mouseleave” に書き換えれば解決するそうです。

2568         }), SFSI(".adminTooltip >a").on("hover", function () {

上記のコードを以下のコードに修正しました。

2568        }), SFSI(".adminTooltip >a").on("mouseenter mouseleave", function () {


2020.12.23 追記

WPFront Scroll Topのプラグインが非互換

jQuery Migrate Helper のログより、プラグイン WPFront Scroll Top に対し、以下の非互換通知を確認しました。

時刻         通知  プラグインまたはテーマ  ファイル位置
2020-12-21 17:46:32 jQuery.fn.scroll() event shorthand is deprecated プラグイン: WPFront Scroll Top https://www.senris.com/xxxxx/wp-content/plugins/wpfront-scroll-top/js/wpfront-scroll-top.min.js

以下の jQuery.fn.scroll() イベントの短縮形は 3.0 で廃止されました。

e(window).scroll(c);e(document).scroll(c);

よって、以下のように修正しました。

e(window).trigger("scroll",c);e(document).trigger("scroll",c);

2020.12.26 追記
jQuery Migrate Helper のログより、以下の非互換通知を確認しました。

時刻         通知  プラグインまたはテーマ  ファイル位置
2020-12-21 17:43:59 jQuery.fn.hover() is deprecated	プラグイン: WPFront Scroll Top https://www.senris.com/xxxxx/wp-content/plugins/wpfront-scroll-top/js/wpfront-scroll-top.min.js

以下の .hover() は mouseover と mouseout イベントを同時に登録するメソッドですが、3.0 では推奨されていないユーザーインターフェースとの事です。

a.hover(function(){clearTimeout(b);g=true;e(this).css("opacity",1)},function(){e(this).css("opacity",d.button_opacity);g=false;j()})

警告が出ないようにするため、.hover(fn1, fn2) を .on(“mouseenter”, fn1).on(“mouseleave”, fn2) に置き換えます。

a.on("mouseenter", function(){clearTimeout(b);g=true;e(this).css("opacity",1)}).on("mouseleave", function(){e(this).css("opacity",d.button_opacity);g=false;j()})

なお、WordPress コアや、他のプラグイン、即ち Easy FancyBox , NewStatPress , Advanced Ads , Jetpack by WordPress.com , Contact Form 7 , Gwolle Guestbook , Auto Featured Image (Auto Post Thumbnail) , BackWPup なども同様の警告通知がログに記録されていますが、これらは何れ更新されるでしょうから、静観する事にしています。

2021.01.12 追記
WPFront Scroll Top ですが、WordPress 5.6 へのアップグレードと他のプラグイン更新に伴い動作しなくなったため、代わりに、 To Top を使用しています。
Topはコンパクトながら、とても拡張性の高いプラグインです。但し、提供されたアイコンの数が少ないため、WPFront Scroll Top からイメージデータを借用しました。よって、画面上の見た目は WPFront Scroll Top と同様です。😅


2021.01.01 追記

テーマ: 千里のポータルサイトが非互換

jQuery Migrate より、テーマのプログラム「keyboard-image-navigation.js」に対し、以下の非互換通知を確認しました。

時刻         通知  プラグインまたはテーマ  ファイル位置
2021-01-01 21:24:04 jQuery.fn.keydown() event shorthand is deprecated テーマ: 千里のポータルサイト https://www.senris.com/xxxxx/wp-content/themes/hpb20T20180326223043/js/keyboard-image-navigation.js

以下の jQuery.fn.keydown() のような省略系のイベントハンドラを登録するメソッドは、3.0 で非推奨となったため、警告を無くすには、該当のメソッドの代わりに、.on() や .trigger() を使います。
.keydown([eventData], handler) なら .on(“keydown”, [eventData], handler) に、 .keydown() なら .trigger(“keydown”) に書き換えます。

$( document ).keydown( function( e ) {

よって、以下のように修正しました。

$( document ).on( "keydown", function( e ) {

2021.02.16 追記
jQuery Migrate より、テーマのプログラム「customizer.js」に対し、以下の非互換通知を確認しました。

時刻         通知  プラグインまたはテーマ  ファイル位置
2021-02-14 15:53:41 jQuery.isFunction() is deprecated テーマ: 千里のポータルサイト https://www.senris.com/xxxxx/wp-content/themes/hpb20T20180326223043/js/customizer.js

jQuery 3.3 以降、「 jQuery.isFunction()」は非推奨になりました。
ほとんどの場合、その用法は typeof x === “function” に置き換えることで解決しますが、指摘されたプログラム(customizer.js)をチェックしたところ、isFunction メソッドが見当たりませんでした。これはjQuery Migrate のバグの可能性もありますので、この問題は保留にしています。

* jQuery Migrate から通知される 3.0 非互換問題についての詳細は、以下のリンク先記事も参考にされると良いかと思います。

参考までに、ホームページビルダーが提供する WordPress 機能の非互換問題に関しては、以下の記事も併せてご覧下さい。

このエントリーをはてなブックマークに追加
X(ポスト)

コメントを残す