Another HTML LintとW3CとSEO
先日の記事にも書いた「お手軽SEO&SMO対策やることリスト」の続編的な感じでW3C&Another HTML Lintに関してちょっと触れてみたいとおもいます。
W3Cとはなんぞと言う方はWikipediaのW3Cの記事でも見て下さい。
ざっくりいうとWEB界で権威のある人たちが集まって標準化されたルールを決めている団体です。
最近はどこぞの官僚のように踏ん反り返っていてオワコン化してきているようですが・・・。
詳細に興味のある人はHTML5とXHTML2についてとか調べてみるといいと思います。
本題にもどると今現在どのサーチエンジンのクローラーがどれ程W3Cの定める正しい構文に重きを置いているのかは分かりませんがSEO対策業者や各種テンプレート販売業者はこぞってW3Cに適合というのを宣伝文句にしているようです。
※実際はValidatorで有名企業などの検索エンジン上位のウェブサイトを見ても100点取ってるところは少ないです・・・。
それに今でもウェブサイト製作者の実力を見る指針にはなっているようなのでクライアント側にある程度知識がある場合は出来る限りハイスコアを出しておいたほうが印象は良いでしょう。
特に「数年前にWEBの知識かじりました。」とか言う人には要注意。
と言うわけで、最近Word Pressで作った独自テンプレート使ったウェブサイトチェックしてみました。
W3C Valitation自体は英語で、デザインも個人的に好きじゃないので今回はそれに準拠した日本のAnother HTML Lint5 Gatewayを使いたいと思います。
すると驚愕のスコアをたたき出しました。
65個のエラーがありました。このHTMLは-126点です。
コレは酷い!と言うことで中身を見てみましょう。
No Severity Line Error Description 1 7 line 29: <LINK> の REL の属性値 `EditURI` は正しくありません。`ALTERNATE`、`AUTHOR`、`HELP`、`ICON`、`LICENSE`、`NEXT`、`PREFETCH`、`PREV`、`SEARCH`、`STYLESHEET` または `CANONICAL` でなければなりません。 解説 102 2 7 line 30: <LINK> の REL の属性値 `wlwmanifest` は正しくありません。`ALTERNATE`、`AUTHOR`、`HELP`、`ICON`、`LICENSE`、`NEXT`、`PREFETCH`、`PREV`、`SEARCH`、`STYLESHEET` または `CANONICAL` でなければなりません。 解説 102 3 7 line 34: <LINK> の REL の属性値 `shortlink` は正しくありません。`ALTERNATE`、`AUTHOR`、`HELP`、`ICON`、`LICENSE`、`NEXT`、`PREFETCH`、`PREV`、`SEARCH`、`STYLESHEET` または `CANONICAL` でなければなりません。 解説 102 4 5 line 35: <META> に他のHTML用の属性 `PROPERTY` が指定されています。 解説 80 5 5 line 35: <META> に CONTENT 属性を指定するときは HTTP-EQUIV 属性か NAME 属性を指定しなければなりません。 解説 149 6 5 line 35: <META> に他のHTML用の属性 `PROPERTY` が指定されています。 解説 80 7 5 line 35: <META> に CONTENT 属性を指定するときは HTTP-EQUIV 属性か NAME 属性を指定しなければなりません。 解説 149 8 5 line 35: <META> に他のHTML用の属性 `PROPERTY` が指定されています。 解説 80 9 5 line 35: <META> に CONTENT 属性を指定するときは HTTP-EQUIV 属性か NAME 属性を指定しなければなりません。 解説 149 10 5 line 35: <META> に他のHTML用の属性 `PROPERTY` が指定されています。 解説 80 11 5 line 35: <META> に CONTENT 属性を指定するときは HTTP-EQUIV 属性か NAME 属性を指定しなければなりません。 解説 149 12 5 line 35: <META> に他のHTML用の属性 `PROPERTY` が指定されています。 解説 80 13 5 line 35: <META> に CONTENT 属性を指定するときは HTTP-EQUIV 属性か NAME 属性を指定しなければなりません。 解説 149 14 5 line 35: <META> に他のHTML用の属性 `PROPERTY` が指定されています。 解説 80 15 5 line 35: <META> に CONTENT 属性を指定するときは HTTP-EQUIV 属性か NAME 属性を指定しなければなりません。 解説 149 16 5 line 35: <META> に他のHTML用の属性 `PROPERTY` が指定されています。 解説 80 17 5 line 35: <META> に CONTENT 属性を指定するときは HTTP-EQUIV 属性か NAME 属性を指定しなければなりません。 解説 149 18 5 line 36: <META> に他のHTML用の属性 `PROPERTY` が指定されています。 解説 80 19 5 line 36: <META> に CONTENT 属性を指定するときは HTTP-EQUIV 属性か NAME 属性を指定しなければなりません。 解説 149 20 5 line 37: <META> に他のHTML用の属性 `PROPERTY` が指定されています。 解説 80 21 5 line 37: <META> に CONTENT 属性を指定するときは HTTP-EQUIV 属性か NAME 属性を指定しなければなりません。 解説 149 22 5 line 38: <META> に他のHTML用の属性 `PROPERTY` が指定されています。 解説 80 23 5 line 38: <META> に CONTENT 属性を指定するときは HTTP-EQUIV 属性か NAME 属性を指定しなければなりません。 解説 149 24 5 line 39: <META> に他のHTML用の属性 `PROPERTY` が指定されています。 解説 80 25 5 line 39: <META> に CONTENT 属性を指定するときは HTTP-EQUIV 属性か NAME 属性を指定しなければなりません。 解説 149 26 5 line 40: <META> に他のHTML用の属性 `PROPERTY` が指定されています。 解説 80 27 5 line 40: <META> に CONTENT 属性を指定するときは HTTP-EQUIV 属性か NAME 属性を指定しなければなりません。 解説 149 28 5 line 41: <META> に他のHTML用の属性 `PROPERTY` が指定されています。 解説 80 29 5 line 41: <META> に CONTENT 属性を指定するときは HTTP-EQUIV 属性か NAME 属性を指定しなければなりません。 解説 149 30 5 line 42: <META> に他のHTML用の属性 `PROPERTY` が指定されています。 解説 80 31 5 line 42: <META> に CONTENT 属性を指定するときは HTTP-EQUIV 属性か NAME 属性を指定しなければなりません。 解説 149 32 5 line 43: <META> に他のHTML用の属性 `PROPERTY` が指定されています。 解説 80 33 5 line 43: <META> に CONTENT 属性を指定するときは HTTP-EQUIV 属性か NAME 属性を指定しなければなりません。 解説 149 34 6 line 52: <IMG> には ALT 属性が必要です。 解説 86 35 0 line 52: <IMG> には WIDTH と HEIGHT 属性を指定するようにしましょう。 解説 186 36 9 line 52: <P>要素は<H1>要素の下位要素にはなれません 解説 254 37 7 line 60: <A> の TARGET の属性値に空の値を指定することはできません。 解説 100 38 6 line 60: <A> の TARGET 属性のフレームターゲット名 `` は正しくありません。 解説 200 39 5 line 63: メタ文字 `&` は `&` と書かなければなりません。 解説 117 40 7 line 73: <A> の TARGET の属性値に空の値を指定することはできません。 解説 100 41 6 line 73: <A> の TARGET 属性のフレームターゲット名 `` は正しくありません。 解説 200 42 6 line 91: <IMG> には ALT 属性が必要です。 解説 86 43 9 line 120: <P>要素は<H2>要素の下位要素にはなれません 解説 254 44 9 line 124: <H3>要素は<H3>要素の下位要素にはなれません 解説 254 45 9 line 124: 124行目の <H3> に対応する終了タグ </H3> が見つかりません。 解説 72 46 9 line 124: <P>要素は<H3>要素の下位要素にはなれません 解説 254 47 9 line 131: <P>要素は<H3>要素の下位要素にはなれません 解説 254 48 9 line 132: </LI> は 131行目の <P> と重なり合っているようです。 解説 70 49 2 line 132: </LI> の前に </P> が省略されているとみなします。 解説 64 50 9 line 132: </LI> は 124行目の <H3> と重なり合っているようです。 解説 70 51 2 line 132: </LI> の前に </H3> が省略されているとみなします。 解説 64 52 9 line 136: </P> に対応する開始タグ <P> が見つかりません。 解説 69 53 9 line 145: <H3>要素は<DL>要素の下位要素にはなれません 解説 254 54 9 line 146: <DD>要素は<LI>要素の下位要素にはなれません 解説 254 55 9 line 153: <H3>要素は<DL>要素の下位要素にはなれません 解説 254 56 9 line 154: <DD>要素は<LI>要素の下位要素にはなれません 解説 254 57 9 line 160: <H3>要素は<DL>要素の下位要素にはなれません 解説 254 58 9 line 161: <DD>要素は<LI>要素の下位要素にはなれません 解説 254 59 9 line 174: <P>要素は<UL>要素の下位要素にはなれません 解説 254 60 7 line 180: <A> の TARGET の属性値に空の値を指定することはできません。 解説 100 61 6 line 180: <A> の TARGET 属性のフレームターゲット名 `` は正しくありません。 解説 200 62 7 line 181: <A> の TARGET の属性値に空の値を指定することはできません。 解説 100 63 6 line 181: <A> の TARGET 属性のフレームターゲット名 `` は正しくありません。 解説 200 64 9 line 185: <P>要素は<UL>要素の下位要素にはなれません 解説 254 65 9 line 189: <P>要素は<UL>要素の下位要素にはなれません 解説 254
1~3はWord Press特有のエラーみたいです。
普段は無視しても大丈夫ですが、せっかくなので直しましょう。
使用しているテンプレートのfunction.phpに以下のコードを挿入します。
remove_action('wp_head', 'rsd_link'); remove_action('wp_head', 'wlwmanifest_link'); remove_action('wp_head', 'wp_shortlink_wp_head');
remove_action();は文字通り、デフォルトで実行するアクションを削除することです。
どれも大したもんじゃないので各種コードの詳細が気になる人はWord Pressフォーラムへどうぞ。
4~34まではちょっと分からなかったのでソースをあたって見たらどうやらソーシャルメディア系のプラグイン(Open Graph ProとWordbooker)の仕業らしいので一旦プラグインをDeactiveに。
残りのエラーはお恥ずかしながらコーディングの際のケアレスミスなのでコードを編集しなおしました。
全てチェックが終わりアップロード完了後にもう一度チェック。
無事完了。
本家W3Cの方でチェックすると、Autherの名前が登録されてないとかいうエラーがでましたが面倒なので放置。(気が向いたら直します。)
と、こんな感じですが、問題はプラグインを切ったのでソーシャルメディアとの関連付けができない。
そこでGoogle先生に聞いてみるとW3のフォーラムに同じ質問があがっていた。
使いたければ諦めろってことですね。
どうしても拘りたいのならばブログを更新する時だけアクティブにするなりするしかなさそう。
それかどなたか良いプラグインをご存知でしたら教えてください。
※この記事は前ブログの記事を書き写したものに加筆&修正したものです。