WordPressには、投稿のコンテンツ内容に合わせて表示スタイルを切り替えるための「投稿フォーマット」という機能が備わっています。
この機能は、ブログ投稿、ギャラリー、動画、引用など、特定の形式を持つコンテンツを最適に表示するために設計されました。
2026年現在のモダンなテーマ開発においても、投稿の意図を明確に分離し、ユーザーに視覚的な変化を提供するための有効な手段となります。
本記事では、投稿フォーマットの基本的な使い方から、テーマに実装する際の実践的なコード、そして運用上の注意点について詳しく解説します。
WordPress投稿フォーマットの基礎知識
投稿フォーマットとは、投稿ごとに「どのような種類のコンテンツか」を定義するためのメタ情報の一種です。
これはカテゴリーやタグとは異なり、主にテーマ側でデザインやレイアウトを自動的に変更する目的で使用されます。
WordPressで標準的に定義されている投稿フォーマットは、以下の表の通りです。
| フォーマット名 | 主な用途 |
|---|---|
| aside(アサイド) | ちょっとした近況報告やサイドバー的な短い投稿に使用します。 |
| gallery(ギャラリー) | 複数の画像を含む画像ギャラリーの投稿に適しています。 |
| link(リンク) | 外部サイトへのリンクが主体の投稿に使用されます。 |
| image(画像) | 単一の画像を表示するためのフォーマットです。 |
| quote(引用) | 他者の言葉や文章を引用する場合に利用します。 |
| status(ステータス) | TwitterなどのSNSのような短い近況アップデートに適しています。 |
| video(動画) | 動画コンテンツを含む投稿に使用します。 |
| audio(音声) | ポッドキャストや音楽ファイルなどの音声コンテンツに使用します。 |
| chat(チャット) | 対話形式のテキストを表示するために用いられます。 |
これらのフォーマットは、テーマが機能を有効化している場合にのみ、投稿編集画面のサイドバーで選択可能になります。
独自に新しいフォーマットを作成することはできませんが、標準のリストから必要なものを選んで利用する形式となります。
テーマで投稿フォーマットを有効化する方法
投稿フォーマットを使用するには、テーマの functions.php ファイルで機能を宣言する必要があります。
add_theme_support 関数を使用し、使用したいフォーマットのリストを配列で指定します。
以下のコードは、一般的なフォーマットを有効化する例です。
// functions.phpに記述するコード
function my_theme_setup() {
// 投稿フォーマットのサポートを追加
add_theme_support( 'post-formats', array(
'aside',
'image',
'video',
'quote',
'link',
'gallery',
) );
}
add_action( 'after_setup_theme', 'my_theme_setup' );
このコードを記述して保存すると、投稿編集画面の「投稿」設定パネル内に、「フォーマット」という選択項目が表示されるようになります。
何も指定しない場合は「標準」がデフォルトのフォーマットとして適用されます。
投稿フォーマットに応じたテンプレートの切り替え
テーマ側でフォーマットごとに表示を切り替えるには、get_post_format() 関数を利用します。
最も効率的な実装方法は、get_template_part() 関数と組み合わせて、フォーマットごとのテンプレートファイルを読み込む手法です。
// index.php や single.php 内での使用例
if ( have_posts() ) :
while ( have_posts() ) : the_post();
// 投稿フォーマットに応じたテンプレート(例: content-video.phpなど)を読み込む
get_template_part( 'template-parts/content', get_post_format() );
endwhile;
endif;
この場合、template-parts フォルダの中に以下のようなファイルを作成しておくことで、自動的に処理が分岐されます。
content.php(標準フォーマット用)content-video.php(動画フォーマット用)content-image.php(画像フォーマット用)content-quote.php(引用フォーマット用)
もし投稿にフォーマットが設定されていない(標準の)場合、get_post_format() は false を返します。
そのため、get_template_part( 'template-parts/content', false ) となり、結果として content.php がフォールバックとして読み込まれます。
条件分岐による表示の制御
テンプレートファイルを分けるほどではない小さな変更の場合は、has_post_format() 関数を使って条件分岐を行います。
例えば、動画フォーマットの投稿にだけ特定のアイコンを表示したい場合は、次のように記述します。
// 条件分岐の例
if ( has_post_format( 'video' ) ) {
echo '<span class="icon-video">動画記事</span>';
}
<span class="icon-video">動画記事</span>
このように、特定のフォーマットに対してのみクラスを付与したり、追加のメタ情報を表示したりすることが容易になります。
特に「引用(quote)」フォーマットでは、投稿本文そのものを引用文としてデザインしたいケースが多いため、この分岐は非常に重宝されます。
テーマ実装時の注意点とベストプラクティス
投稿フォーマットを実装する際には、いくつか注意すべき重要なポイントがあります。
1. すべてのフォーマットを有効化しない
add_theme_support で定義する際、利用する予定のないフォーマットまで含める必要はありません。
選択肢が多すぎると、投稿者がどのフォーマットを選べばよいか迷う原因になります。
サイトのコンテンツ戦略に合わせて、必要なものだけを厳選して有効化してください。
2. ブロックエディタ(Gutenberg)との親和性
現在のWordPressでは、ブロックエディタ内で「動画ブロック」や「引用ブロック」を使用することが一般的です。
投稿フォーマットは、個別のブロックではなく「投稿全体」の性質を定義するものであることを理解しておく必要があります。
2026年のトレンドとしては、ブロックパターンを活用してデザインを実現することが増えていますが、アーカイブページでの一括した出し分けには、依然として投稿フォーマットが有用です。
3. CSSの設計
WordPressは、body_class() や post_class() 関数を使用している場合、自動的にフォーマット名のクラスをHTML要素に付与します。
例えば、動画フォーマットの投稿には format-video というクラスが付与されます。
<!-- 実際の出力例 -->
<article id="post-123" class="post-123 post type-post status-publish format-video hentry">
...
</article>
PHP側でテンプレートを分けなくても、この .format-video クラスをターゲットにCSSを記述するだけで、背景色やフォントサイズを変更することが可能です。
複雑な構造の変更が必要ない場合は、CSSによるスタイリングのみで完結させる方が保守性が高まります。
4. データの互換性
投稿フォーマットはテーマ固有の機能として実装されることが多いため、将来的にテーマを変更した際、新しいテーマが投稿フォーマットをサポートしていないと、意図した表示が崩れる可能性があります。
コンテンツのデータ自体が消えるわけではありませんが、デザイン上の意味合いが失われるリスクを考慮し、ドキュメントに記載しておくことが推奨されます。
カスタム投稿タイプでの利用
投稿フォーマットはデフォルトの「投稿(post)」だけでなく、カスタム投稿タイプでも利用可能です。
カスタム投稿タイプを登録する register_post_type 関数の supports パラメータに post-formats を追加します。
// カスタム投稿タイプでの実装例
register_post_type( 'portfolio', array(
'label' => 'ポートフォリオ',
'public' => true,
'supports' => array( 'title', 'editor', 'thumbnail', 'post-formats' ),
) );
ただし、カスタム投稿タイプで投稿フォーマットを使用する場合も、add_theme_support での宣言が必要ですので注意してください。
これにより、ポートフォリオ投稿の中で「作品画像」と「制作過程の動画」を異なるレイアウトで表示するといった柔軟な運用が可能になります。
まとめ
WordPressの投稿フォーマットは、コンテンツの種類に応じて最適なユーザー体験を提供するための強力なツールです。
add_theme_support による有効化から、get_template_part を活用したテンプレートの分離まで、基本を押さえることでテーマの表現力は格段に向上します。
2026年のWeb制作においても、ブロックエディタと投稿フォーマットを適切に組み合わせることで、整理された管理画面と魅力的なフロントエンド表示を両立させることができます。
まずは、サイトに必要なフォーマットを定義し、CSSクラスを利用した簡単なスタイリングから試してみてはいかがでしょうか。
適切に実装された投稿フォーマットは、サイト運営者にとっても更新作業の質を高める重要な要素となるはずです。
