updated属性を追加しました

このブログの目的の一つには、Google向けSEO対策を実際に体験してみることもあります。というわけでGoogle Webmaster Tools向けにいろいろと改造をしていたのですが、少し困ったのがupdated属性が出力されていない、と言われる件です。

ググると以下のような記事が出てきます。

https://wordpress.org/support/topic/magazine-basic-google-webmasters-tools-missing-updated-missing-author?replies=4

しかし、この記事にある “the_date” って何の日付なのかさっぱり分かりません。こういう曖昧なものを使いたくない性分なので、ちゃんとした更新日を出力するメソッドを探しました。以下です。

https://developer.wordpress.org/reference/functions/get_the_modified_date/

これを先の記事のように組み立てて自分のテンプレートに組み込めば完了です。このブログで使っているテンプレートはWordPress純正のTwenty Twelveです。私の場合ソースを眺めていると属性情報が集約されている箇所が見つかりました。functions.phpのtwentytwelve_entry_meta()がそれです。これを以下のように改変します。(コード表示用のCSSが上手くないのでべたっと貼りますすいません)

改変前
$date = sprintf( '<a href="%1$s" title="%2$s" rel="bookmark"><time class="entry-date" datetime="%3$s">%4$s</time></a>',
esc_url( get_permalink() ),
esc_attr( get_the_time() ),
esc_attr( get_the_date( ‘c’ ) ),
esc_html( get_the_date() ) );

改変後
$date = sprintf( '<a href="%1$s" title="%2$s" rel="bookmark"><time class="entry-date" datetime="%3$s">%4$s</time></a>|更新日:<time class="date updated" datetime="%5$s">%6$s</time>',
esc_url( get_permalink() ),
esc_attr( get_the_time() ),
esc_attr( get_the_date( 'c' ) ),
esc_html( get_the_date() ),
esc_attr( get_the_modified_date( 'c' ) ),
esc_html( get_the_modified_date() ) );

若干ださいですが、これでGoogle側はちゃんと認識してくれました。この関数は最後にまとめて属性情報をprintfしているのですが、その部分の動きが分からなかったのでべたっと更新日を追加しています。ラベル出力ロジックと、英語のラベルを日本語に翻訳している部分も合わせて直せば完璧に近いでしょう。また、このテーマ自体が更新されるとこれも上書きされてしまいかねないので、「子テーマ」という機能を使ってこの関数をオーバーライドすれば、さらに完璧になると思います。