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

⌛この記事を読むのにかかる時間: 5

update 最終更新日:2023年4月10日

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のプラグインが非互換

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

時刻         通知  プラグインまたはテーマ  ファイル位置
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のプラグイン設定画面において、以下に警告が表示されました。

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非互換問題についての詳細は、以下のリンク先記事も参考にされると良いかと思います。

コメントを残す