WordPressの各記事に、クラス名を追加するpost_class
関数を使用すると、hentry
というクラスが追加されます。
1 |
<article id="post-<?php the_ID(); ?>" <?php post_class(); ?>> |
1 |
<article id="post-221" class="post-221 post type-post status-publish format-standard hentry category-tips article"> |
このhentry
とは、HTMLに構造化データを付加するMicroformatsで定義された、個々のエントリを示すクラスです。
しかし、hentry
以外のクラスは自動的に付加されないので、このままでは構造化データとして意味を成しません。
そこで、hentry
以外のクラスを、テンプレートに追加していきます。
タイトルを示すentry-titleと、パーマリンクを示すbookmark
タイトルにはentry-title
クラスを追加します。
また、記事のパーマリンクには、rel
属性にbookmarkを追加します
。
1 |
<h1 class="entry-title"><a href="<?php the_permalink(); ?>" rel="bookmark"><?php the_title(); ?></a></h1> |
このうち、entry-title
は必須項目となります。
投稿日時を示すpublishedと、更新日時を示すupdated
投稿日時にはpublished
クラスを追加します。
1 2 3 |
<p> 投稿日 : <time class="published"><?php the_time('Y-n-j'); ?></time> </p> |
更新日時にはupdated
クラスを追加します。
1 2 3 |
<p> 更新日 : <time class="updated"><?php the_modified_date('Y-n-j'); ?></time> </p> |
Microformatsでは、更新日時のほうが必須項目になるので、注意が必要です。
また、MicroformatsではISO8601形式の日時の値を使う必要があります。
日時をYYYY-MM-DD
やhh:mm:ss
というフォーマット以外で表記したい場合は、value-title
クラスを使用してISO8601形式の日時情報を付加します。
1 2 3 |
<p> 更新日 : <time class="updated"><span class="value-title" title="<?php the_time('Y-n-j'); ?>"><?php the_modified_date('Y/n/j'); ?></span></time> </p> |
著者を示すauthor
著者(投稿者名)にはauthor
クラスを追加します。
1 2 3 |
<p> 投稿者: <span class="author"><?php the_author(); ?></span> </p> |
Microformatsでは、author
は必須項目です。
内容を示すentry-contentと、概要を示すentry-summary
内容(投稿の本文)にはentry-content
クラス、概要(投稿の抜粋)にはentry-summary
クラスを追加します。
1 2 3 |
<div class="<?php echo is_single() ? 'entry-content' : 'entry-summary'; ?>"> <?php the_content(); ?> </div> |
通常、the_content
関数は、個別記事ページでは投稿の本文を、それ以外では投稿の抜粋を表示するので、上記のコードではis_single
関数で条件分岐しています。
Microformatsを使用する問題点
エントリ(記事)をMicroformatsで構造化する場合、以下の項目が必須になります。
hentry
— エントリentry-title
— エントリのタイトルupdated
— エントリの更新日時author
— エントリの著者
このうち、タイトルは大抵のサイトで表示すると思いますが、著者(投稿者)は表示しない場合も多いと思います。
また、更新日時でなく投稿日時を表示する事も多いでしょう。
これらの場合、Microformatsの必須項目の仕様が足かせになってしまいます。
解決策として、post_class
関数でhentry
クラスが追加されないようにして、構造化にはMicroformats
以外を採用するのも一つの方法です。
これについては、別の記事を作成する予定です。