WordPress 3.1 実装の投稿フォーマット (Post Formats) を使って表示するように変更しました。まだどのように表示を変えるかのイメージが出来なかったので、軽く表示の変化だけつけてみました。以前 Twenty Ten などに実装してあったものを、投稿形式で選べるようになっています。前はカテゴリーを作らないといけなかったので、少し自由度がありませんでした。今回の実装で、自由度が格段に上がりました。
テーマへの適応のさせ方は、至って簡単です。WordPress 3.1 に入っている新しい Twenty Ten を参考にすれば良いと思いますが、色々と配慮がしてあって余分なコードもある感じです。親切で良いですが・・・。
現時点で、WordPress 3.1-RC2 を使用しています。
テーマへの実装
functions.php に以下を追加します。
add_theme_support( 'post-formats', array( 'aside', 'gallery' ) );
私は使えるもの全部を実装してありますが、どう考えても使わないであろうものも多いです。その辺はご自身の環境で選んでください。以下が全部使用する場合です。
add_theme_support( 'post-formats', array( 'aside', 'chat', 'gallery', 'image', 'link', 'quote', 'status', 'video', 'audio' ) );
全部実装すると、以下のような感じで公開メタ情報ボックスの下に追加されています。

投稿フォーマットメタ情報ボックス
例えばギャラリーフォーマットを選ぶと、以下のように format-gallery クラスが追加されます。

format-gallery クラス
手軽に、こんな感じにタイトルを表示しないとか。
.format-gallery .entry-title {
display:none;
}
対応している投稿フォーマットは、以下のようなものがあります。
aside
メインとは違う、重みの薄い記事などに使う。
chat
チャットの履歴などに使うそうだが・・・
gallery
画像ギャラリーがメインの記事に使う。
image
単独画像の記事に使う。
link
外部リンクがメインの記事に使う。
quote
引用文がメインの記事に使う。
status
つぶやき的な短い記事に使う。
video
単独動画の記事に使う。
audio
単独音声ファイルなどの記事に使う。
手軽に CSS だけで表示に変化をつけたいだけなら、このクラスだけでも良いかもしれません。ですが、ほとんどの場合は、根本的に表示を変えたいと思うはずです。
ダイナミックに表示を変える場合
条件分岐タグの has_post_format で表示を変える事ができます。loop.php などで使用すれば、形式に見合った表示が簡単にできます。
if ( has_post_format( 'aside' )) {
echo the_content();
}
上記で実装してみた所、私の環境ではクエリがめちゃ増えました。標準、ギャラリー、スタースと3つの形式があったからだと思いますが・・・。
と言う事で、Twenty Ten で実装してあった get_post_format を使うことにしました。Twenty Ten では以下のように使われています。
<?php if ( 'aside' == get_post_format( $post->ID ) || in_category( _x( 'asides', 'asides category slug', 'twentyten' ) ) ) : ?>
<div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
<?php if ( is_archive() || is_search() ) : // Display excerpts for archives and search. ?>
<div class="entry-summary">
<?php the_excerpt(); ?>
</div><!-- .entry-summary -->
<?php else : ?>
<div class="entry-content">
<?php the_content( __( 'Continue reading <span class="meta-nav">→</span>', 'twentyten' ) ); ?>
</div><!-- .entry-content -->
<?php endif; ?>
<div class="entry-utility">
<?php twentyten_posted_on(); ?>
<span class="meta-sep">|</span>
<span class="comments-link"><?php comments_popup_link( __( 'Leave a comment', 'twentyten' ), __( '1 Comment', 'twentyten' ), __( '% Comments', 'twentyten' ) ); ?></span>
<?php edit_post_link( __( 'Edit', 'twentyten' ), '<span class="meta-sep">|</span> <span class="edit-link">', '</span>' ); ?>
</div><!-- .entry-utility -->
</div><!-- #post-## -->
<?php endif; ?>
上記の場合、投稿フォーマット aside と、カテゴリー asides の時に表示を適応させることになります。私も以前は、このカテゴリー asides で表示を変えていました。以前に古い形式を使用していない場合、カテゴリーの方は不要なので、投稿フォーマット aside の方だけで良いと思います。
<?php if ( 'aside' == get_post_format( $post->ID ) ) : ?>
流れ的には以下の用な感じです。
<?php if ( 'gallery' == get_post_format( $post->ID ) ) : ?>
<!-- ここにギャラリーで表示したいものを記述 -->
<?php elseif ( 'aside' == get_post_format( $post->ID ) ) : ?>
<!-- ここにアサイドで表示したいものを記述 -->
<?php else : ?>
<!-- ここに標準を含め、その他で表示したいものを記述 -->
<?php endif; ?>
試しに適応させてみた表示例です。まだちゃんと方向性が出来ていませんが・・・。アイコンを適応させたり、表示を簡素化させたりって感じです。タイトルは表示しないとしまらなかったので、全部表示させました。もっと大胆に変えちゃった方が面白いんだろうと思う。スタースだったら、吹き出しにしちゃったりするとか。そのうちにコレ使ったテーマも出てくるだろうから、その時に考えようって人任せな感じですw
後は、has_post_format を要所に使っていけば、細々としたことが出来ると思います。アイデア次第ですが、そのアイデアがなかなか思いついていないです。





