お問い合わせはコチラから

Default Thumbnail Plusプラグインのjsエラー修正方法

サイト運営

WordPressで記事を書くときにアイキャッチ画像をいちいち指定するのが面倒だったりします。そんな時に便利なプラグインがあります。

アイキャッチ画像が指定されなかった時にデフォルトの画像を指定できるプラグインはありますが、カテゴリごとの画像の指定ができたりして一番使い勝手が良かったのが、『Default Thumbnail Plus』というプラグインでした。

しかし、最終更新が8年前と、全く更新されていないので、新しいjQuery3だと古い記述がエラーになります。

WordPressのサポートフォーラムを見ても更新されていないので、もう誰も使っていないのかもしれませんが、便利なので修正して使い続けようと思いました。

この記事では、Default Thumbnail PlusプラグインのjQuery3系でのjsエラーの修正方法について説明します。

Default Thumbnail Plusの設定から画像を指定するボタンが動かない

Default Thumbnail Plusでエラーが起きていた

slt-file-select.js対してこんなメッセージがConsoleに表示されました。

TypeError: $(...).live is not a function

いわゆるjQuery1.9以降に廃止された記述方法に起因するエラーです。

githubにソースが公開されているのですが、Archiveになっているので、プラグインはもう更新される予定は無さそうです。

エラーの原因の記述

以下の$( ‘.slt-fs-button’ ).live(‘click’, function() {がエラーの原因です。

		// Invoke Media Library interface on button click
		$( '.slt-fs-button' ).live('click', function() {
			$( 'html' ).addClass( 'File' );
			tb_show( '', 'media-upload.php?slt_fs_field=' + $( this ).siblings( 'input.slt-fs-value' ).attr( 'id' ) + '&type=file&post_id=0&TB_iframe=true' );
			return false;
		});

修正方法

8年も更新されていないので、問題の記述があるslt-file-select.jsファイルを直接書き換えます。

$( ‘.slt-fs-button’ ).live(‘click’, function() {

$( ‘body’ ).on(‘click’, ‘.slt-fs-button’,function() {

と変更します。

		// Invoke Media Library interface on button click
		$( 'body' ).on('click', '.slt-fs-button',function() {
			$( 'html' ).addClass( 'File' );
			tb_show( '', 'media-upload.php?slt_fs_field=' + $( this ).siblings( 'input.slt-fs-value' ).attr( 'id' ) + '&type=file&post_id=0&TB_iframe=true' );
			return false;
		});

参考https://stackoverflow.com/questions/14354040/jquery-1-9-live-is-not-a-function

まとめ

今回は、プラグインの更新予定が無さそうなので、プラグインを直接書き換えました。もちろん次に更新される時には今回の記述の部分は修正されるでしょうから、いずれにしても問題ないと思います。

タイトルとURLをコピーしました