WordPress6.1でampエラー『属性「decoding」はタグ「amp-img」で使用できません。』を解決

関連記事

突然Google Search Consoleで大量発生した『許可されていない属性または属性値が HMTL タグにあります。』と言うエラー。

内容を確認すると『属性「decoding」はタグ「amp-img」で使用できません。』とあります。

あのGoogleともあろうものがHTMLをHMTLとタイポしているのも気になりますが、とりあえず修正を試みる。

ググったところ、どうやらWordPress6.1で追加されたwp_img_tag_add_decoding_attr()関数が悪さをしているようなので修正しました。

  • functions.php
// decoding属性削除
if (function_exists('wp_img_tag_add_decoding_attr')) {
    add_filter('wp_img_tag_add_decoding_attr', function ($value, $image, $context) {
        return '';
    }, 10, 3);
    add_filter('wp_get_attachment_image_attributes', function ($attr, $attachment, $size) {
        unset($attr['decoding']);
        return $attr;
    }, 10, 3);
}

記事本文中の画像にdecoding属性を付与するwp_img_tag_add_decoding_attr()関数は、

decoding属性として使えない文字列(sync, async, auto以外)が渡されると動作を中断するので、空白文字を渡しておけばOK。

記事本文中の画像以外もdecoding属性を消したいのでwp_get_attachment_image_attributesにもfilterを引っ掛けておきます。

この手の機能無効化でよく使う ‘__return_false’ は機能しませんでした。

無名関数を使ったことでシンプルに書けました。

しかし今どきamp対応をガン無視した機能を入れてくるとは思わないじゃん、WordPressくん…。

さっさとこのコードが必要なくなるといいのですが。

関連記事

SNSでシェアする