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以外を採用するのも一つの方法です。
これについては、別の記事を作成する予定です。
