WordPressの検索フォームでXHTML文法エラーを修正

ワードプレスのウィジェットで検索フォームを表示するようにすると、XHTMLで文法エラーを指摘されます。フォームタグのrole="search"が文法に従っていないと表示されます。

XHTMLでのrole属性

WordPressの サイドバー楽天 のウィジェットの設定で検索フォームを作ることができます。これはブログ内検索をするのにとても便利なのですが、これをするとXTHMLで文法エラーとなってしまいます。文法をチェックしてくれる(http://validator.w3.org/)でチェックするとすぐにわかります。

これはフォームタグにrole属性がついているからです。このrole属性は特に必要ないので除去します。WordPress3.02-jaでもWordPress3.03-jaでも付いています。バージョンアップをしたら、再度修正の必要があります。

role属性とは

role属性とは要素に役割を与える属性です。属性値には「banner」「contentinfo」「definition」「main」「navigation」「note」「search」「secondary」「seealso」等があります。「search」は文書の中の検索セクションを表しています。

role属性は、XHTMLの拡張としてW3Cより草案として出ているものですが、WordPressで早めに取り入れたもののようです。今は特に必要ないので削除してしまいます。

role="search"を記録しているファイルと位置の見つけ方と修正

検索フォームにあるrole="search"は、どこにあるのかなかなかわかりません。私はTextSSを使って探しました。TextSSはパソコン内にある複数のテキストファィルの内容をサーチして、一括変更できる優れたフリーのソフトです。

該当箇所はWordPress3.02-jaとWordPress3.03-jaの場合、/wp-includes/general-template.phpの160行目付近にあります。

$form = '<form role="search" method="get" id="searchform" action="' . home_url( '/' ) . '" >

となっているので、role="search"を消します。これでエラーは無くなりました。いつもチェックして文法エラーは無くしておきたいものです。

XHTML(HTML)文法チェックをしておきたいものです

ホームページやブログを作成したら、この文法チェックをしておきたいものです。常々チェックすることで、いつも文法に気をつけることができます。

Another HTML-lint gatewayこのサイトでは、ページを採点して、100点満点で何点かを表示してくれます。たぶん95点以上になっているはずです。これぐらいの点数が取れれば表示が変になることはまずありません。