サポート » バグ報告と提案 » 「重大なエラーが発生しました」について

  • 解決済 dragoon505

    (@dragoon505)


    現象
    「重大なエラーが発生しました」ページにおいて、meta name=”robot”が正常に出力されない件について

    修正前のhtmlソース(例)
    <meta name=’robots’ content=’noindex, follow, max-image-preview:large’ />
    解説:要素が[‘]シングルクォーテーションで囲まれているため、正常に認識されない

    バージョンWordPress 5.7.1

    修正箇所
    wp-includes/robots-templete.php
    49行目
    echo “<meta name=’robots’ content='” . esc_attr( implode( ‘, ‘, $robots_strings ) ) . “‘ />\n”;
    }

    を以下のように書き換え
    echo “<meta name=\”robots\” content=\”” . esc_attr( implode( ‘, ‘, $robots_strings ) ) . “\” />\n”;
    }

    修正後の出力結果(例)
    <meta name=”robots” content=”noindex, follow, max-image-preview:large” />

    原因:該当部分のソースにエスケープ文字が設定されていないため。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • HTMLにおいて、属性値の囲いはシングルクォーテーションでもダブルクォーテーションのどちらでも構いませんので、この違いが原因で正常に認識されないということはないはずです。もし認識されないのであれば、認識できないほうがHTMLの仕様に沿っていないとも言えます。

    参考:syntax-attributes (HTML Standard)

    それと蛇足ですが、もしあえて書き換えるとすれば、
    echo '<meta name="robots" content="' . esc_attr( implode( ', ', $robots_strings ) ) . '" />'."\n";
    のほうがエスケープを使うよりスマートな気がします(※個人の感想です)。

    こんにちは

    HTML5 の仕様においてはダブルクォートを使うと定められているようですね。

    MDN Web Docs – HTML ガイドライン – ダブルクォートを使う

    しかし、Google はシングルクォートは解釈しないなどということはありません。

    Twitter @methode

    • この返信は3ヶ月、 2週前にmunyaguが編集しました。

    Bing などがどうなっているのかは知りませんが、ブラウザの一般的な解釈はシングルでもダブルでも正しく解釈されるので、検索エンジンがそれとは異なっているとは考えにくいと個人的には思います。

    スレッド開始 dragoon505

    (@dragoon505)

    そうですか、ブラウザのソースで見ると、シングルクォートの該当部分の行全体が灰色になっていたので、てっきり認識されていないのかと思っていました。
    特に問題が無いということであれは゛、無かったことにしていただいてもどちらでもよいのではないかと思います。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • このトピックに返信するにはログインが必要です。