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